獲取存儲過程的返回值
你這個
存儲過程
,這樣直接返回字元串,是不行的。存儲過程直接返回,只能返回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