Declare @CategoryID as int
BEGIN
SELECT
(CASE
WHEN EXISTS(
SELECT t0.Categoryid AS [EMPTY]
FROM Categories AS [t0]
WHERE [t0].Categoryname = @CategoryName
) THEN 1
ELSE 0
END) AS [value]
si je veux définir ma variable à l'intérieur du bloc existe avec t0.Categoryid comment pourrais-je faire cela?
ce que je veux, c'est remplacer puis 1 par valeur de la catégorie id ...
merci d'avance..
Declare @CategoryID as int
SET @CategoryID = CASE WHEN EXISTS(SELECT 1
FROM Categories
WHERE Categoryname = @CategoryName)
THEN 1 ELSE 0
END
Une autre façon serait quelque chose comme ...
IF EXISTS (SELECT 1
FROM Categories
WHERE Categoryname = @CategoryName)
BEGIN
SET @CategoryID = 1;
END
ELSE
BEGIN
SET @CategoryID = 0;
END
Cela renverra l'id de catégorie, s'il existe, et 0 s'il ne l'est pas.
SET @CategoryID = null;
SELECT @CategoryID = t0.Categoryid
FROM Categories AS [t0]
WHERE [t0].Categoryname = @CategoryName;
IF @CategoryID IS NULL
SET @CategoryID = 0;
SELECT @CategoryID AS [value];
Cependant, je recommanderais simplement de retourner null s'il n'existe pas, ou de renvoyer un @Exists (BIT) supplémentaire pour indiquer s'il existe ou non.
Mes 2 cents ...
DECLARE @any BIT = 0
SELECT TOP 1 @any = 1 FROM Categories WHERE CategoryName = @CategoryName
IF (@any = 1)
PRINT 'Yes'
ELSE
PRINT 'No'
Vous pouvez essayer comme ça.
Declare @CategoryID as int
Set @CategoryID =0;
SELECT @CategoryID=t0.Categoryid
FROM Categories AS [t0]
WHERE [t0].Categoryname = @CategoryName
SI le nom de la catégorie Existe puis attribue l'ID de catégorie de cette catégorie sinon il reste zéro.
Declare @CategoryID as int
SET @CategoryID =
(SELECT t0.Categoryid AS [EMPTY]
FROM Categories AS [t0]
WHERE [t0].Categoryname = @CategoryName)
SET @CategoryID =COALESCE(@CategoryID ,0)