當前位置:首頁 » 存儲配置 » 獲取存儲過程的返回值

獲取存儲過程的返回值

發布時間: 2022-08-17 16:32:04

sql存儲過程的返回值

你這個
存儲過程
,這樣直接返回字元串,是不行的。存儲過程直接返回,只能返回int類型的數據,或者是int類型的字元串。
你需要為你的存儲過程定義一個輸出參數。然後在調用時,接收這個輸出參數。

⑵ 怎麼從sqlserver的存儲過程獲得返回的數據

SQL Server中存儲過程的返回值不是通過return語句返回的(return語句是在用戶自定義函數中使用的),而是通過存儲過程的參數來返回,在定義存儲過程的參數時使用關鍵字output來指定此參數是返回值。
而在調用存儲過程時,也必須使用關鍵字給接收返回值的變數,這樣才能在調用時獲得存儲過程的返回值。
示例:

create procere dbo.pr_add @a int, @b int, @c int outputas set @c = @a + @bgo

調用:

declare @v intexecute dbo.pr_add 1, 2, @v outputselect @v

⑶ 如何調用存儲過程的返回值

存儲過程中的第一個參數 @title 將接收由調用程序指定的輸入值,而第二個參數 @ytd_sales 將向調用程序返回該值。SELECT 語句使用 @title 參數以獲得正確的 ytd_sales 值,並將該值賦予 @ytd_sales 輸出參數。 CREATE PROCEDURE get_sales_for

⑷ 獲取存儲過程返回值

這個test(100,200)這個不對的吧,其中有一個是output的值,你這個都變成input了。
還有我估計參數2是輸出參數,以為存儲過程中需要把 輸出的寫在輸入之後。
創建存儲過程語法基本如下:
create or replace procere test1( 參數1 in varchar2(20),參數 2 out varchar2(20))
還有一種可能就是如果你這兩個參數既能輸入也能輸出的話,是
create or replace procere test1( 參數1 in out varchar2(20),參數 2 in out varchar2(20))
這樣就分不清楚哪個是輸出了。

你是不是java程序組的,負責把BI組編的存儲過程放進去?
這樣需要多溝通了吧,我對java不是很了解,希望我說的sql方面的能幫到你。

⑸ sqlalchemy 調用 mssql存儲過程如何獲取返回值

請參參考以下代碼:

from pyodbc import drivers, connect, Connection, Cursor

def output_cursor(cursor: Cursor):

...."""列印輸出當前結果集"""

....print('-' * 80)

....print(','.join(_[0] for _ in rst.description))

....for row in cursor:

........print(row)


spt = '''

declare @returns int,@count int,@lastDoTime datetime

exec @returns = test_proc_call @count output,@lastDoTime output

select @returns returns,@count count,@lastDoTime lastDoTime

'''

cur = db.execute(spt)

for rst in iter_cursor(cur):

....output_cursor(rst)


輸出:

--------------------------------------------------------------------------------

returns,count,lastDoTime

(18, 21, datetime.datetime(2020, 3, 4, 14, 43, 46, 923000))


存儲過程:test_proc_call

create procere test_proc_call

(@p1 int output

,@p2 datetime output

)

as

begin

--此過程有返回值,有output參數,有結果集

select @p1=max(id),@p2=max(LastDoTime)

from Tasks with(nolock)

select * from Tasks with(nolock)

return @@rowcount

end

⑹ 如何在pb腳本當中獲取存儲過程的返回值

本文擬以SYBASE ASE 10.X和11.X資料庫為例,說明如何在PB腳本當中獲取存儲過程的返回值。作為一個存儲過程,其輸出的結果數據可能包括三類:SELECT結果集、RETURN結果、OUTPUT參數。盡管輸出方式眾多,但PB腳本僅僅藉助簡單的FETCH…INTO…語句即可全部獲取這些輸出數據,具體方式如下:
(一)在SYBASE ASE 10.X和11.X資料庫當中創建一個存儲過程deptroster,其有一個輸入參數@deptno、兩個輸出參數@totsal 和 @avgsal、一個RETURN值@number_of_emps以及包含職員姓名和工資的SELECT結果集,可見除了輸入參數@deptno外,其他均為輸出數據,我們需要在PB腳本中獲取,具體代碼如下:

CREATE PROCEDURE deptroster @deptno integer,

@totsal double precision output,

@avgsal double precision output

AS

DECLARE @number_of_emps integer

SELECT emp_fname, emp_lname, salary FROM employee

WHERE dept_id = @deptno

SELECT @totsal = sum(salary),

@avgsal = avg(salary),

@number_of_emps = COUNT(*) FROM employee

WHERE dept_id = @deptno

RETURN @number_of_emps;
二)PB腳本當中我們需要捕獲SELECT結果集、RETURN值和兩個輸出參數,其輸出順序也是按照「SELECT結果集、RETURN值、輸出參數」順序輸出,具體代碼如下:

integer fetchcount = 0

long lDeptno, rc

string fname, lname

double dSalary, dTotSal, dAvgSal

lDeptno = 100

//此處聲明存儲過程名稱

DECLARE deptproc PROCEDURE FOR
@rc = dbo.deptroster

@deptno = :lDeptno,

@totsal = 0 output,

@avgsal = 0 output

USING SQLCA;

//此處開始執行存儲過程

EXECUTE deptproc;

//判斷執行結果

CHOOSE CASE SQLCA.sqlcode
CASE 0

//如果返回0則表示執行成功,至少存在一個SELECT結果集

//藉助LOOP循環開始捕獲這個SELECT結果集

DO

FETCH deptproc INTO :fname, :lname, :dSalary;

CHOOSE CASE SQLCA.sqlcode

CASE 0

fetchcount++

CASE 100

MessageBox ("End of Result Set", &

string (fetchcount) " rows fetched")

CASE -1

MessageBox ("Fetch Failed", &

//此處關閉存儲過程

CLOSE deptproc;

CASE 100

// 如果返回100,則表示沒有返回結果集.

// 此時不需要單獨執行CLOSE語句.

MessageBox ("Execute Successful", "No result set")

CASE ELSE

//其他情況則表示存儲過程執行失敗,提示用戶即可

MessageBox ("Execute Failed", &

string (SQLCA.sqldbcode) " = " &

⑺ 如何獲取存儲過程返回值

樓主會在c#中使用存儲過程嗎?
如果會的話,sql執行函數賦值給一個變數就可以了
sqlconnection
cnn
=
new
sqlconnection();
cnn.connectionstring
=
"data
source
=
數據源;uid=sa;pwd
=
;database=資料庫名";
cnn.open();//資料庫連接
//設置存儲過程參數
sqlparameter
prm;
sqlcommand
cmd
=
new
sqlcommand();
cmd.connection
=
cnn;
cmd.commandtype
=
commandtype.storedprocere;
cmd.commandtext
=
"存儲過程名";
//項目類型
prm
=
new
sqlparameter();
prm.parametername
=
"參數名1";
prm.sqldbtype
=
sqldbtype.varchar;
prm.size
=
50;
prm.value
=
combobox1.text;
prm.direction
=
parameterdirection.input;
cmd.parameters.add(prm);
...
//可以繼續設置參數,參數個數由存儲過程的具體內容決定
cmd.executenonquery();//執行存儲過程
實際上如果要獲取存儲過程的返回值,只要將上面一句代碼修改成:
int
retn
=
cmd.executenonquery();
就可以了

⑻ 取一個SQL存儲過程的返回值

當@UserID存在返回JID,否則返回-1,--存儲過程Create Procere _GetUserJID(@UserID Varchar(128),@Rst Int Out)
As
Begin
Select @Rst=JID From TB_USer Where StrUserID=@UserID
If(Isnull(@Rst,0)=0)
Set @UserID=-1
Set @Rst=@UserID
End
--調用
Declare @Rst Int
Exec _GetUserJID '1001',@Rst Out
Select @Rst--函數Create Function F_GetUserJID(@UserID Varchar(128))
Returns Int
As
Begin
Declare @Rst Int
Select @Rst=JID From TB_USer Where StrUserID=@UserID
If @Rst Is Null
Set @Rst=-1
Return @Rst
End --調用Select dbo.F_GetUserJID('1001')

⑼ SQL中存儲過程參數傳遞有哪幾種方法如何獲取存儲過程的返回值

參數傳遞?
參數有in參數、out參數、in out參數
變數可用set和select賦值

獲取返回值只需設置變數、到時輸出就行

單行數據定義固定變數數、
如果結果是數據集、要用游標cursor

熱點內容
androidhyperv 發布:2024-12-26 16:25:15 瀏覽:701
袁弘超級訪問 發布:2024-12-26 16:18:38 瀏覽:363
linux重命名文件 發布:2024-12-26 16:16:56 瀏覽:421
光遇安卓飛行機什麼時候到來 發布:2024-12-26 16:11:06 瀏覽:955
存儲空間分割 發布:2024-12-26 16:05:03 瀏覽:114
code編譯運行是哪個 發布:2024-12-26 15:54:34 瀏覽:166
mybatis列印sql語句 發布:2024-12-26 15:53:55 瀏覽:756
腰椎壓縮性骨折骨水泥 發布:2024-12-26 15:53:45 瀏覽:676
x洗牌演算法 發布:2024-12-26 15:52:50 瀏覽:151
學習c語言要先學什麼 發布:2024-12-26 15:51:35 瀏覽:803