存储过程写作

时间:2014-06-19 14:26:36

标签: sql sql-server sql-server-2005 stored-procedures

我是SQL Server的新手,我想编写一个存储过程。

我有三个参数PAN_NoPolicyNoClientID来搜索来自2个不同表格的详细信息,其中包含一个公共列ClientID

Client_details表包含列ClientIDPAN_NOContract_Details表包含ClientIDPolicyNoDOB列。

如果我要使用PAN_NOPolicyNo进行搜索,我想显示所有详细信息。

1 个答案:

答案 0 :(得分:0)

不确定你的意思,但

CREATE PROCEDURE usp_PocedureName --give proper procedure name
    @PAN_No int, -- not sure what the exact data types
    @PolicyNo int,
    @ClientID int
AS
    SELECT 
        Column1, Column2, Column3 -- Select whatever the columns you need
    FROM
        Client_ details Client
    INNER JOIN
        Contract_Details Contract ON Contract.ClientID = Client.ClientID
    WHERE
        Client.ClientID = @ClientID 
      AND (PAN_No=@PAN_No OR PolicyNo =@PolicyNo)

<强>更新

作为一种逻辑,您可以在不使用参数进行搜索时传递默认值

在这种情况下我们可以使用0

所以

 SELECT
     Column1, Column2, Column3 -- Select whatever the columns you need
 FROM
     Client_ details Client
 INNER JOIN
     Contract_Details Contract ON Contract.ClientID = Client.ClientID
 WHERE
     Client.ClientID = @ClientID 
     AND (@PAN_No > 0 AND PAN_No = @PAN_No) OR 
         (@PolicyNo > 0 AND PolicyNo = @PolicyNo)

因此,只有值为>0且@PolicyNo

时才会搜索@PAN_No