2015-09-07 58 views
0

如何使用IF語句確定一個參數是否有值然後執行一些工作,參數獲取查詢字符串但返回任何記錄。任何人都可以將我指向正確的方向嗎?SQL確定參數是否有值不起作用

CREATE PROCEDURE [dbo].[spAttachment_View] 
    @knowid int, 
    @actionid int 
AS 
    if(@actionid is null) 
    begin 
     SELECT   
      name, contentType, uploadKnowledgeID AS id 
     FROM    
      t_uploadFileForKnowledge 
     WHERE   
      (knowledgeID_FK = @knowid) 
    end 
    else 
    begin 
     SELECT   
      name, contentType, uploadActionTicketID AS id 
     FROM    
      [t_uploadForAction] 
     WHERE   
      (actionID_FK = @actionid) 
end 
+1

這是什麼意思'沒有正常工作? –

+0

「但它沒有正常工作,任何人都可以指向正確的方向?」,也許如果你告訴我們什麼「不能正常工作」意味着 – Lamak

回答

1

SQL Fiddle demo

這工作

CREATE PROCEDURE [dbo].[spAttachment_View] 
    @knowid int, 
    @actionid int 
AS 
    if(@actionid is null) 
    begin 
     SELECT 'Im null'      
    end 
    else 
    begin 
     SELECT 'Im not null' 
    end 

EXEC [dbo].[spAttachment_View] @knowid =1 , @actionid = null 
0

而不是測試空,你可能有COALESCE一個更好的解決方案,您可以在空的情況下,提供一個默認的(有效)值。否則看看上面的Oropeza的解決方案。

+0

也許是錯誤的,但OP問題需要select和coalesce'無法與這種情況下工作? –