Reputation: 363
CREATE PROCEDURE findlist @comedianname1 nvarchar(30),@comedianname2 nvarchar(30)
AS
SELECT comedian
FROM Comedian
if @comedianname2!=null
begin
WHERE comedian! = @comedianname1 and comedian! = @comedianname2
end
else
begin
WHERE comedian! = @comedianname1
end
GO
I am getting this error : Msg 156, Level 15, State 1, Procedure findlist, Line 7 Incorrect syntax near the keyword 'WHERE'.
Upvotes: 1
Views: 57
Reputation: 28403
Try this
CREATE PROCEDURE findlist @comedianname1 nvarchar(30),@comedianname2 nvarchar(30)
AS
SELECT comedian
FROM Comedian
WHERE (comedian! = @comedianname1 and comedian! = @comedianname2) OR (comedian! = @comedianname1)
GO
Upvotes: 1
Reputation: 1502
You need to use the below query
SELECT comedian
FROM Comedian
WHERE comedian! = @comedianname1 and (comedian! = @comedianname2 OR @comedianname2 IS NULL)
Upvotes: 2
Reputation: 56697
You can not use IF
in select. You could do this instead in your case:
SELECT comedian
FROM Comedian
WHERE
comedian! = @comedianname1 AND
comedian! = ISNULL(@comedianname2, comedian!)
What does it do? If compares comedian!
to @comedianname1
and if @comedianname2
is not null, it compares comedian!
to @comedianname2
. Otherwise it compares comedian!
to comedian!
, which is always true
.
Upvotes: 3