這裏變量賦值是一個存儲過程,我想在SQL Server寫的簡化版本,2005年SQL Server 2005中有條件SP
我的問題是這樣的:
我已經聲明的變量@docid
到我想在我的遊標中迭代查詢的結果時,如果沒有完全匹配,那麼我想運行另一個查詢並嘗試下一個最佳匹配。
我試過在IF @docid IS NULL then BEGIN [second query]
的測試中。這是行不通的,因爲變量@docid
不會是Null
它只會保留先前的值,直到第一個查詢的條件滿足並且它被分配一個新值。
所以我該怎麼說:「如果我嘗試爲變量@docid分配一個docid,但沒有根據查詢中的條件進行匹配,那麼請運行下一個查詢或set @docid=''"
?任何幫助,將不勝感激。由於
declare @docid bigint,
@account varchar(30)
While @@fetch_status=0
BEGIN
Select @Docid=Docid
FROM printdata
WHERE [email protected]
IF @docid Is Null --Docid Is never Null once assigned a value
BEGIN
Select @Docid=Docid
FROM printdata
WHERE [email protected]
END
你確定你需要使用遊標是什麼?你正在嘗試在更高層面上做什麼? –
我從先前創建的臨時表中提取數據,並將其與另一個表中的Docid信息組合,然後將其插入兩個新表中。所以我正在用光標經過我的臨時表1的行1。 – cloud311
從這個描述中,我想我們可以找到一個沒有光標的解決方案......這可能是一個更快/更簡單的解決方案。我可不可以要求你編輯你的問題,包括你開始使用的臨時表,以及你最終希望插入到兩個新表中的內容? –