我有客户名称和医生姓名。我想从数据库中获取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语句中使用这些变量...使用**两个**临时表格对于此非常低效并且总体过度杀伤... –