2014-06-24 246 views
0

我有這樣一個存儲過程:獲得在SQL Server多個返回值

ALTER procedure [dbo].[MobileDevice] 
@platesourcecnt integer, 
@plateCategory integer 
as 
begin 
declare @SplateSourcecount integer, 
@SplateCategory integer, 
@Splatecode integer 


select @SplateSourcecount= count(ps.PSID)from PlateSource_tbl ps 
if @SplateSourcecount <> @platesourcecnt 
begin 
select PSID,PS from PlateSource_tbl where Deleted=0 
end 
else 
begin 
return 1 

end 

Select @SplateCategory=COUNT(pcat.PCID) from PlateCategory_tbl pcat 
if @SplateCategory <> @plateCategory 
begin 
select PCID,PC,PSID from PlateCategory_tbl where Deleted=0 
end 
else 
begin 
return 2 
end 

這裏我platesource_tblcount13,如果我通過價值@platesourcecnt =13然後我得到返回值1但那次我的第二個選擇查詢不起作用。
如果我將除13之外的其他參數傳遞給@platesourcecnt,那麼兩者都可以工作。
我的存儲過程有什麼問題?
我可以在一個存儲過程中獲得多個返回值嗎?

+0

爲什麼要返回,U需要它? – Azar

+0

我想查詢一下wethar先查詢返回值還是不行? – user3252014

+0

然後使用我給出的變量解決方案 – Azar

回答

1

不,你不能返回兩次,一個回報將帶你出去,

而是使用選擇1退貨1,選擇2回2

或者宣佈兩個變量@ RETURN1,@ RETURN2 在PROC選擇@ RETURN1 'RETURN1' 末,@ RETURN2 'RETURN2'

0

嘗試thiss PROC

ALTER procedure [dbo].[MobileDevice] 
@platesourcecnt integer, 
@plateCategory integer 
as 

if (select count(ps.PSID)from PlateSource_tbl ps)<> @platesourcecnt 
select PSID,PS from PlateSource_tbl where Deleted=0 
else 
raiserror('1st return',16,1) 

if (Select COUNT(pcat.PCID) from PlateCategory_tbl pcat)<> @plateCategory 
select PCID,PC,PSID from PlateCategory_tbl where Deleted=0 
else 
raiserror('2nd return',16,1) 
+0

你的意思是raiserror? – user3252014

+0

Jst知道if語句是否返回值 – Azar

+0

而不是我們可以用select select? – user3252014