存儲過程可以返回一個整數值,方式是:
exec @r = myproc;
或者通過output.參數獲得返回值,這樣的返回值不限類型;
有過程mypro
2. 獲取存儲過程返回值
這個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方面的能幫到你。
3. 怎麼從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
4. SQL中存儲過程調用存儲過程,怎麼取返回值
存儲過程中的第一個參數 @title 將接收由調用程序指定的輸入值,而第二個參數 @ytd_sales 將向調用程序返回該值。SELECT 語句使用 @title 參數以獲得正確的 ytd_sales 值,並將該值賦予 @ytd_sales 輸出參數。
CREATE PROCEDURE get_sales_for_title
@title varchar(80), -- This is the input parameter.
@ytd_sales int OUTPUT -- This is the output parameter.
AS
-- Get the sales for the specified title and
-- assign it to the output parameter.
SELECT @ytd_sales = ytd_sales
FROM titles
WHERE title = @title
RETURN
GO
5. 如何獲取存儲過程的返回值和輸出值
沒有見過調用存儲過程象調用游標一樣的代碼,一般我是這樣聲明的:DECLARE Lproc_1 PROCEDURE FOR
proc_1 @as_int = :li_int OUTPUT ;
execute Lproc_cw_gz_personal_cal ;
變數li_int即為返回的值。如果要同時返回多行的數據,可以使用DATAWINDOW或者是DATASTORE來得到結果集:
string ls_sql_syntax , ls_syntax
string ls_error
integer li_ini
6. 如何調用存儲過程的返回值
存儲過程
中的第一個參數
@title
將接收由調用程序指定的輸入值,而第二個參數
@ytd_sales
將向調用程序返回該值。SELECT
語句使用
@title
參數以獲得正確的
ytd_sales
值,並將該值賦予
@ytd_sales
輸出參數。
CREATE
PROCEDURE
get_sales_for
7. c#如何取得存儲過程的返回值
比如你的存儲過程返回參數變數名字為@res,而且sqlcommand cmd已經聲明定義;
那麼在執行sql語句之前
應該:
cmd.Parameters["@res"].Direction = ParameterDirection.InputOutput;
然後執行sql語句;
執行完畢再:
int res=(int)cmd.Parameters["@res"].Value;
結束,res就是存儲過程的返回值了
8. 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
9. 如何獲取存儲過程返回值
樓主會在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();
就可以了