我對這個特殊的SQL工作存儲過程沿着這裏的生意情況如下:SQL SP:如何返回一個非活動記錄與活動記錄
商業案例: 表專業包含了所有的專業和每個記錄都有一個字段用於告訴它是活動還是非活動。我們總是僅以下拉的形式顯示該表中的活動記錄。用戶可以選擇以後可以停用的專業。新的要求是能夠將該非活動記錄與結果集中的所有活動記錄一起提取。
以下是我認爲我應該這樣做:如果沒有專門分配給我拉起,然後在下拉將是由所有活動記錄中填充的人 。 如果有一個與我正在拉起的人關聯的非活動專業,那麼我將存儲過程中的該專業ID作爲參數發送,並將該非活動記錄與活動記錄一起返回以填充下拉列表。
下面是我走到這一步: 到目前爲止,如果我不通過任何specialtyId然後我回到這是工作積極專業的記錄。當我發送一個specialtyId參數時,它只是返回一個非活動記錄,而不是其他活動記錄的剩餘部分。我還需要剩下的活動記錄以及那個不活動的記錄。
DECLARE @specialtyId INT = null;
BEGIN
IF isnull(@specialtyId,'')=''
BEGIN
SELECT SpecialtyID AS Id, Specialty AS Name
FROM dbo.Specialties
WHERE IsActive = 1
ORDER BY Specialty;
END
ELSE
BEGIN
SET @specialtyId = @specialtyId ;
SELECT s.SpecialtyID AS Id, s.Specialty AS Name
FROM dbo.Specialties s
WHERE specialtyId = @specialtyId
GROUP BY s.Specialty, s.SpecialtyID
HAVING (Specialty IS NOT NULL)
AND (max(SpecialtyID) IS NOT NULL)
ORDER BY Name;
END
END
您使用的是MySQL還是MS SQL Server?他們的sp不兼容... – jarlh
這是應該做的:SET specialtyId = specialtyId; ?? (由於在評論中提及,刪除了@) – Jens
isnull(specialtyId,'')=''您將INT值與空字符串進行比較? – Jens