我忙於重寫SQL Server 2014s TSQL的一些PostgreSQL存儲過程/函數。TSQL過程返回多行數據
我努力從這個存儲過程返回我的值,但這只是一個測試,但我試圖在這種情況下返回多行數據爲兩個變量si_code和co_desc。
我有我的順序(測試)
if (object_id('p_get_serial')) is not null
drop procedure p_get_serial
go
create procedure p_get_serial(@par01 char(20), @par02 integer)
as
declare
@co_num integer,
@co_desc char(20),
@si_code char(20),
@log char(40)
declare mycur cursor for
select co_num, co_desc
from colours
where co_num <= @par02
open mycur
fetch next from mycur into @co_num,
@co_desc
while @@FETCH_STATUS = 0
begin
set @si_code = ''
select @si_code = si_code
from sitems
where si_co_num = @co_num
set @log = @co_desc + ' ' + @si_code
raiserror(@log,0,1) with nowait
fetch next from mycur into @co_num, @co_desc
end
close mycur deallocate mycur
go
exec p_get_serial @par01 = 'paramater01', @par02 = 10
的是返回結果我知道會有多行的最好方法如下?
你應該顯示你的輸入表和所需的輸出,它看起來像你不應該使用遊標(他們是最後的手段)。無條件的恐怖犯罪的意圖是什麼? –
在這個例子中,我不需要光標這只是一個測試,真正的過程太複雜,沒有光標 – Trent
你也可以考慮一個函數,輸出一個表。但是如果SP是唯一的方法 - 創建/定義一個表變量並在sp的末尾輸出。另外 - 通常遊標在sql-server中是「糟糕的」(糟糕的整體性能)。如果你能找到一種避免遊標的方法,你將會獲得更好的性能。 – ripvlan