簡體   English   中英

表中的存儲過程調用變量

[英]Stored Procedure calling variables from table

我有一個使用變量ID的存儲過程,在表中有一個有效ID的列表。

我正在嘗試編寫一個存儲過程,如果該ID存在於表中,則該存儲過程將運行一段特定的代碼。 我只是不確定語法。

以下是我要執行的操作的偽代碼。

IF
@ID = possible id IN (SELECT DISTINCT ID FROM [dbo].ID_TABLE WHERE ID = 'valid')
      SELECT * FROM dbo.[results]

ELSE

SELECT * FROM dbo.[otherresults]

我正在使用SQL Server

通常,在這種情況下,您將使用EXISTS 如...

IF EXISTS (SELECT * FROM ID_TABLE WHERE ID = @ID)

盡管@ID IN (SELECT DISTINCT可以工作,但該查詢需要遍歷表數據以組裝結果集,然后檢查結果是否包含@ID。EXISTS查詢不會創建結果集,而是在符合條件的第一行提早返回。

如果您的查詢

SELECT DISTINCT ID FROM [dbo].ID_TABLE WHERE ID = 'valid'

總是只返回一個id,那么下面的解決方案就足夠了

@ID = (SELECT DISTINCT ID FROM [dbo].ID_TABLE WHERE ID = 'valid')

如果返回ID列表,則需要創建一個臨時表並存儲這些ID,如下所示

create table #temp_table(id int)
insert into #temp_table SELECT DISTINCT ID FROM [dbo].ID_TABLE WHERE ID = 'valid'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM