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

sql調用存儲過程返回值

發布時間: 2022-10-09 00:09:39

sql存儲過程的返回值

存儲過程應該有返回值的,
問題應該出現在你vb6的調用語句中(第二個參數是輸出類型的參數,
是否有正確設置).
你可以在查詢分析器中執行此存儲過程,
看看返回的結果.
還有,
此存儲過程中的select語句最好加上top
1限制,
因為你只要判斷是否能選到結果而已:
select
top
1
*
from
tb_package
where
packagenumber=@a

㈡ 在 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

㈢ 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

㈣ SQL 取存儲過程的返回值

你這個存儲過程,這樣直接返回字元串,是不行的。存儲過程直接返回,只能返回int類型的數據,或者是int類型的字元串。

你需要為你的存儲過程定義一個輸出參數。然後在調用時,接收這個輸出參數。

㈤ 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

㈥ sql中如何通過存儲過程返回結果集

引用
4

oraclefans_
的回復:想麻煩了。。你直接返回遊標就是一個結果集合。。CREATE
OR
REPLACE
PROCEDURE
USP_RETN_VAL(
RETN_VAL_CUR
OUT
sys_refcursor)ISBEGIN
OPEN
RETN_VAL_CUR
FOR
SELECT
*
FROM
TBL1;END;調用declare
cur
sys_refcurso……謝謝
但是我是想執行一個存儲過程後,直接返回表裡所有數據,不要再去操作游標。

㈦ 如何使用SQL變數獲取一個存儲過程的返回值

如果是單一值,參考:
SQL code
D. 使用 OUTPUT 參數
OUTPUT 參數允許外部過程、批處理或多條 Transact-SQL 語句訪問在過程執行期間設置的某個值。下面的示例創建一個存儲過程 (titles_sum),並使用一個可選的輸入參數和一個輸出參數。

首先,創建過程:

USE pubs
GO
IF EXISTS(SELECT name FROM sysobject

㈧ 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

㈨ sql存儲過程怎麼返回string類型的返回值怎麼返回多個值

1.如果是返回一個值,可以在存儲過程里增加參數進行返回,如:
create proc aaa(@ReturnValue varchar(100) output)
……
你在存儲過程里設置@ReturnValue的值就行了。
VB里運行存儲過程,然後訪問ReturnValue參數就行了。
2、如果是返回多列數據,就直接在存儲過程里select表,VB里運行存儲過程後,可以獲取返回表。

熱點內容
安卓手機如何使用大流量 發布:2025-05-14 17:47:34 瀏覽:81
精密模具編程 發布:2025-05-14 17:45:16 瀏覽:499
存儲順序和邏輯順序有什麼區別 發布:2025-05-14 17:44:30 瀏覽:275
安卓版設置里的隱身在哪裡 發布:2025-05-14 17:35:16 瀏覽:333
linuxshell密碼 發布:2025-05-14 17:21:11 瀏覽:200
安卓手機聽筒在哪裡關閉 發布:2025-05-14 17:16:20 瀏覽:456
我的世界炸毀50萬伺服器 發布:2025-05-14 17:16:07 瀏覽:123
存儲站源 發布:2025-05-14 17:14:20 瀏覽:864
win2008的ftp設置 發布:2025-05-14 17:03:31 瀏覽:665
萊克發的工資卡密碼是多少 發布:2025-05-14 16:57:10 瀏覽:179