我有客戶名稱和醫生姓名。我想從數據庫中獲取ID並在表中插入ID。SQL查找並插入
CREATE PROCEDURE AddMedicalCard
@Client nchar,
@Doctor nchar
AS
BEGIN
SELECT Clients.[ClientCode] AS [Code]
Into #NewClientCode
FROM Clients
WHERE Clients.[ClientName][email protected]
SELECT Personal.[DoctorCode] AS [Code]
Into #NewDoctorCode
FROM Personal
WHERE Personal.[DoctorName][email protected]
INSERT INTO MedicalCard
VALUES (#NewClientCode.[Code].First, #NewDoctorCode.[Code].First)
DROP TABLE #NewClientCode
DROP TABLE #NewDoctorCode
END
GO
錯誤:
多部分識別符 「#NewDoctorCode.Code.First」 不能被約束。
無法綁定多部分標識符「#NewClientCode.Code.First」。 列名或提供的值的數量與表定義不匹配。
MedicalCard表設計:
RecordingCode(Key), ClientCode, DoctorCode
和5其它空的列。
首先:如果你使用任何字符串相關類型作爲參數 - ** **總是指定一個長度!否則你的字符串將是** 1個字符長**!其次:爲什麼'nchar'?如果你有一個固定長度的字符串 - 例如一個3個字符的貨幣代碼或類似的東西。否則,我會**總是**使用'nvarchar(x)'作爲可變長度的字符串。 –
另外:爲什麼即使使用臨時表?你只是檢索一個值 - 只是將它們存儲到SQL變量中,並在INSERT語句中使用這些變量...使用**兩個**臨時表格對於此非常低效並且總體過度殺傷... –