Oracle-10g

返回 Oracle 儲存過程中的行數

  • May 22, 2012

我主要是 SQL Server 人,所以如果這與​​ SQL Server 太接近,請原諒我,但簡而言之,使用 Oracle 10 我正在嘗試建構一個類似這樣的過程:

PROCEDURE SP_INFO_EX_S(
   v_EX_ID    IN NUMBER,
   v_EX_ROWS               OUT NUMBER
   )
AS

SELECT COUNT(*) AS ExCount
FROM EXAMPLE
WHERE EX_ID = v_EX_ID
END SP_INFO_EX;

我想做的是返回 v_EX_ROWS 作為範例表中與 WHERE 子句匹配的總行數,但 Google 似乎對此沒有答案。我錯過了什麼嗎?謝謝!

你快到了,只需將 select 的結果放入 out 變數中:

SELECT COUNT(*)
 into v_EX_ROWS
FROM EXAMPLE
WHERE EX_ID = v_EX_ID

不過,您可能會更好地使用函式:

create or replace function SP_INFO_EX_S(v_EX_ID    IN NUMBER)
  return number
AS
 row_count number;
BEGIN
   SELECT COUNT(*) 
     into row_count;
   FROM EXAMPLE
   WHERE EX_ID = v_EX_ID;

   return row_count;
END SP_INFO_EX;
/

然後做:

select sp_info_ex_s(42) from dual;

根據您的查詢工具,這可能比 out 參數更容易處理。

引用自:https://dba.stackexchange.com/questions/18274