這是我的SQL查詢,當我執行它時,出現下面顯示的錯誤。我是SQL Server的新手,任何人都可以解釋這個錯誤的原因是什麼?我怎樣才能將這個SQL JOIN查詢設置爲變量?如何在存儲過程中設置查詢值以輸出變量
ALTER PROC spGetFullLog
@PatientID varchar(10),
@PatientD nvarchar(255) output
WITH ENCRYPTION
AS
BEGIN
SELECT
@PatientD = First_Name,
Last_Name,
dbo.CalculateAge(Date_of_Birth) AS Age,
Admitted_Date, Patient_Condition,
Medicine_Prescribed, Treatment_Advice,
Treatments_Given, Date_of_Discharged,
Diagnosis, Treatments,
Date_of_operation, Typpe_of_operation,
Condition_Before, Condition_After
FROM
Patients_Main
FULL JOIN
Admitted_Patients ON Patients_Main.Patient_ID = Admitted_Patients.Patient_ID
LEFT JOIN
Discharged_Patients ON Patients_Main.Patient_ID = Discharged_Patients.Patient_ID
LEFT JOIN
Patient_Consultation_Details ON Patients_Main.Patient_ID = Patient_Consultation_Details.Patient_ID
LEFT JOIN
Operation ON Patients_Main.Patient_ID = Operation.Patient_ID
LEFT JOIN
Patient_Conditon ON Patients_Main.Patient_ID = Patient_Conditon.Patient_ID
WHERE
Patients_Main.Patient_ID = @PatientID
END
這是我用於執行此存儲過程
DECLARE @Details nvarchar(255)
EXECUTE spGetFullLog 'PT0001', @Details output
print @Details
這是錯誤
消息141,級別15,狀態1,過程spGetFullLog代碼,行7
將值賦給變量的SELECT語句不能與數據檢索操作結合使用。
嘗試再次運行** WITHOUT **'PatientD ='。我的猜測是你不會收到錯誤信息。如果我是正確的,這意味着您要麼爲所有提取的字段提供變量,要麼不提供變量。如果你需要程序返回一個包含所有字段的記錄集,你可以簡單地把所有的值都變成局部變量,做任何你必須做的事(用變量'PatientD'),然後隱含**'SELECT' **返回前的所有變量。 – FDavidov
@Spiderman:_complex and tricky_?你是認真的嗎? – FDavidov
另外一個觀察:您將條件設置爲WHERE Patients_Main.Patient_ID = PatientID。嘗試'WHERE Patients_Main.Patient_ID = First_Name'(在開始處移除分配之後)。 – FDavidov