當前位置:首頁 » 存儲配置 » 調用存儲過程返回值

調用存儲過程返回值

發布時間: 2024-12-22 01:56:47

1. 取一個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')

2. asp.net調用存儲過程返回值問題

你的用法不對,存儲過程的返回值不是用來返回數據的,存儲過程只能返回int,而且這個int的目的是用來表示存儲過程執行狀態的,比如執行成功,執行錯誤等等。你這種情況要用output parameter,比較符合標准。

但其實這不是重點,重點是ExecuteScalar是返回結果集第一行第一列的值,不是return value,你搞錯了。

3. 如何在PB中調用存儲過程並取得返回值和輸出值的相關推薦

沒有見過調用存儲過程象調用游標一樣的代碼,一般我是這樣聲明的: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
ls_sql_syntax = 'execute proc_1 "' + string ( li_ini ) + '"'
Datastore ldt_item
ldt_item = Create Datastore
ls_syntax = SQLCA.SyntaxFromSQL( ls_sql_syntax '', ls_error )
IF Len( ls_error ) > 0 THEN
MessageBox("提示信息", "創建數據存儲窗口語法出現錯誤!" + ls_error )
RETURN - 1
END IF

ldt_item .Create( ls_syntax, ls_error )
IF Len( ls_error ) > 0 THEN
MessageBox("提示信息", "創建數據存儲對象出現錯誤!" + ls_error )
RETURN - 1
END IF
ldt_item . Settransobject ( sqlca )
ldt_item . retrieve ( )
後面就通常的遍歷了!

4. 存儲過程中調用帶返回值的函數

如果是ACCESS、MySQL、SQL 2000 資料庫

SELECT * FROM tabel_ WHERE date < (now()-30)

資料庫都自帶很多函數的

5. 在 sql select 語句中 如何獲取 存儲過程的返回值

SQL Server中存儲過程的返回值不是通過return語句返回的(return語句是在用戶自定義函數中使用的),而是通過存儲過程的參數來返回,在定義存儲過程的參數時使用關鍵字output來指定此參數是返回值。

而在調用存儲過程時,也必須使用關鍵字給接收返回值的變數,這樣才能在調用時獲得存儲過程的返回值。

示例:

createproceredbo.pr_add@aint,@bint,@cintoutput
as
set@c=@a+@b
go

調用:

declare@vint
executedbo.pr_add1,2,@voutput
select@v

6. SQL Server 在一個存儲過程中調用另外一個存儲過程獲取返回值,出現報錯

第一種方法: 使用output參數

USE AdventureWorks;
GO
IF OBJECT_ID ( 'Proction.usp_GetList', 'P' ) IS NOT NULL
DROP PROCEDURE Proction.usp_GetList;
GO
CREATE PROCEDURE Proction.usp_GetList @proct varchar(40)
, @maxprice money
, @compareprice money OUTPUT
, @listprice money OUT
AS
SELECT p.name AS Proct, p.ListPrice AS 'List Price'
FROM Proction.Proct p
JOIN Proction.ProctSubcategory s
ON p.ProctSubcategoryID = s.ProctSubcategoryID
WHERE s.name LIKE @proct AND p.ListPrice < @maxprice;
-- Populate the output variable @listprice.
SET @listprice = (SELECT MAX(p.ListPrice)
FROM Proction.Proct p
JOIN Proction.ProctSubcategory s
ON p.ProctSubcategoryID = s.ProctSubcategoryID
WHERE s.name LIKE @proct AND p.ListPrice < @maxprice);
-- Populate the output variable @compareprice.
SET @compareprice = @maxprice;
GO

另一個存儲過程調用的時候:

Create Proc Test
as
DECLARE @compareprice money, @cost money
EXECUTE Proction.usp_GetList '%Bikes%', 700,
@compareprice OUT,
@cost OUTPUT
IF @cost <= @compareprice
BEGIN
PRINT 'These procts can be purchased for less than
$'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'
END
ELSE
PRINT 'The prices for all procts in this category exceed
$'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'
第二種方法:創建一個臨時表

create proc GetUserName
as
begin
select 'UserName'
end

Create table #tempTable (userName nvarchar(50))
insert into #tempTable(userName)
exec GetUserName

select #tempTable

--用完之後要把臨時表清空
drop table #tempTable--需要注意的是,這種方法不能嵌套。例如:

procere a
begin
...
insert #table exec b
end

procere b
begin
...
insert #table exec c
select * from #table
end

procere c
begin
...
select * from sometable
end

--這里a調b的結果集,而b中也有這樣的應用b調了c的結果集,這是不允許的,
--會報「INSERT EXEC 語句不能嵌套」錯誤。在實際應用中要避免這類應用的發生。

第三種方法:聲明一個變數,用exec(@sql)執行:

1);EXEC 執行SQL語句

declare @rsql varchar(250)
declare @csql varchar(300)
declare @rc nvarchar(500)
declare @cstucount int
declare @ccount int
set @rsql='(select Classroom_id from EA_RoomTime where zc='+@zc+' and xq='+@xq+' and T'+@time+'=''否'') and ClassroomType=''1'''
--exec(@rsql)
set @csql='select @a=sum(teststucount),@b=sum(classcount) from EA_ClassRoom where classroom_id in '
set @rc=@csql+@rsql
exec sp_executesql @rc,N'@a int output,@b int output',@cstucount output,@ccount output--將exec的結果放入變數中的做法
--select @csql+@rsql
--select @cstucount

7. C# 調用 存儲過程中,參數 input output return 的含義.

input 是輸入參數
output 是輸出參數
return 是返回值,是存儲過程中調用 RETURN 語句返回的值,調用此語句也就代表存儲過程返回了,執行完畢

一般如果只需要存儲過程返回一個值,那麼使用RETURN就行了
如果需要多個值,那麼就需要OUTPUT參數交互取值
也就是說OUTPUT和RETURN取得的效果是相同的

8. sqlserver怎麼獲取存儲過程的返回值

1.OUPUT參數返回值

CREATEPROCEDURE[dbo].[nb_order_insert](
@o_buyeridint,
@o_idbigintOUTPUT
)
AS
BEGIN
SETNOCOUNTON;
BEGIN
INSERTINTO[Order](o_buyerid)
VALUES(@o_buyerid)
SET@o_id=@@IDENTITY
END
END

2.存儲過程中獲得方法:

DECLARE@o_buyeridint
DECLARE@o_idbigint
DECLARE@resultbit
EXEC@result=[nb_order_insert]@o_buyerid,o_idoutput

3.SELECT 數據集返回值

CREATEPROCEDURE[dbo].[nb_order_select](
@o_idint
)
AS
BEGIN
SETNOCOUNTON;
SELECTo_id,o_buyeridFROM[Order]
WHEREo_id=@o_id
GO

9. Entity Framework 5.0 調用存儲過程 返回值為什麼是int類型

存儲過程的返回值類型固定為int類型,不支持其它類型,函數才可以返回多樣化類型。如果你要通過存儲過程傳遞數據出來,請使用輸出型參數。
這是SQL的基礎知識,和C#無關。

熱點內容
地圖下載源碼 發布:2024-12-22 13:18:40 瀏覽:393
navicat存儲過程導出 發布:2024-12-22 13:12:44 瀏覽:299
androidservice線程 發布:2024-12-22 13:04:57 瀏覽:301
ntplinux伺服器配置 發布:2024-12-22 12:28:23 瀏覽:268
android模擬機 發布:2024-12-22 12:26:08 瀏覽:609
貪玩藍月密碼如何修改 發布:2024-12-22 12:16:54 瀏覽:985
ps4無法上傳存檔 發布:2024-12-22 12:10:23 瀏覽:524
未轉變者如何加伺服器 發布:2024-12-22 11:58:28 瀏覽:903
sql多個and 發布:2024-12-22 11:51:49 瀏覽:433
android包管理 發布:2024-12-22 11:35:25 瀏覽:88