存储过程写作[关闭]

问题描述 投票:-2回答:1

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

我有三个参数PAN_NoPolicyNoClientID来搜索2个不同表格中的细节,其中有一个共同的列ClientID

Client_details表有列ClientIDPAN_NOContract_Details表有列ClientIDPolicyNoDOB

如果我要用PAN_NOPolicyNo搜索,我想显示所有细节。

sql sql-server sql-server-2005 stored-procedures
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.