2017-02-17 12 views
1
LocationID LocationName 
50   Sharjah 
51   Qatar 
55   Rigga 
6   Dubai Mall 

мне нужно сделать SQL запрос, который принимает в качестве параметра locationId, если locationId передается 0, то я хочу, чтобы показать все это записывает иначе показать, как на locationId прошло. Я пробовал дело, но не удалось.Case используется в целых значений

ответ

0

Попробуйте это: Здесь @Parm будет непреходящей ценность для вашего сценария

SELECT * 
FROM TableName 
WHERE (@Parm = 0 OR LocationID = @Parm) 
0
DECLARE @locationId INT; 

SELECT LocationID, LocationName 
FROM yourTable 
WHERE @locationId = 0 OR LocationID = @locationId 
0

Я создал хранимую процедуру для вас.

CREATE TABLE #LOCATIONS 
(
    LocationID INT 
    ,LocationName VARCHAR(100) 
) 

INSERT INTO #LOCATIONS VALUES(
50,'Sharjah') 
,(51,'Qatar') 
,(55,'Rigga') 
,(6,'Dubai Mall') 

SELECT * FROM #LOCATIONS 
GO 

CREATE PROC LOC (@LOC_ID INT) 
AS 
BEGIN 

    IF(@LOC_ID = 0) 
     SELECT * FROM #LOCATIONS 
    ELSE 

    SELECT * FROM #LOCATIONS WHERE LocationID = @LOC_ID 
END 
GO 

EXEC LOC 0 -- Try Executing the stored proc like this 
EXEC LOC 55 -- Try Executing the stored proc like this