Вот мой 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
Это ошибка
Msg 141, Level 15, State 1, процедура spGetFullLog, строка 7
Оператор SELECT, который присваивает значение переменной, не должен комбинироваться с операциями поиска данных.
Попробуйте запустить это снова ** БЕЗ ** 'PatientD ='. Я предполагаю, что вы не получите сообщение об ошибке. Если я прав, это означает, что вы либо предоставляете переменные всем извлеченным полям, либо никому. Если вам нужна процедура для возврата набора записей со всеми полями, вы можете просто получить все значения в локальные переменные, делать все, что вам нужно (с переменной 'PatientD'), а затем подразумевать **' SELECT' ** все переменные перед возвратом. – FDavidov
@Spiderman: _complex и tricky_ ?? Ты серьезно? – FDavidov
Одно дополнительное наблюдение: вы устанавливаете условие как 'WHERE Patients_Main.Patient_ID = @ PatientID'. Попробуйте 'WHERE Patients_Main.Patient_ID = First_Name' (после удаления назначения в начале). – FDavidov