我是SQL Server的新手,我想编写一个存储过程。
我有三个参数PAN_No
,PolicyNo
和ClientID
来搜索2个不同表格中的细节,其中有一个共同的列ClientID
。
Client_details
表有列ClientID
,PAN_NO
和Contract_Details
表有列ClientID
,PolicyNo
,DOB
。
如果我要用PAN_NO
或PolicyNo
搜索,我想显示所有细节。
不确定你的意思,但是
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