Sql 我正在尝试查找无法绑定多部分标识符的原因
我试图创建一个存储过程,但出现了一个错误 无法绑定多部分标识符 它显示了我在标题中提到的错误,当然我试图找到一个解决方案,但我不能 当我试图删除表规范“emps.money\u per\u hour”时,它给了我无效的列名错误,尽管我很确定它不是 只是一些额外的信息(有两个表出席和EMPSql 我正在尝试查找无法绑定多部分标识符的原因,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图创建一个存储过程,但出现了一个错误 无法绑定多部分标识符 它显示了我在标题中提到的错误,当然我试图找到一个解决方案,但我不能 当我试图删除表规范“emps.money\u per\u hour”时,它给了我无效的列名错误,尽管我很确定它不是 只是一些额外的信息(有两个表出席和EMP emps中有货币兑换率和id,出勤率中有参考id、入职时间和出勤时间,因此该程序应使用这两个参数计算工资)您使用的是insert语句的值形式,不允许您引用表。如果希望引用在insert语句之后而不是之前从表中选
emps中有货币兑换率和id,出勤率中有参考id、入职时间和出勤时间,因此该程序应使用这两个参数计算工资)您使用的是insert语句的值形式,不允许您引用表。如果希望引用在insert语句之后而不是之前从表中选择的表。请检查一下电话号码 我想你想要的是:
CREATE PROCEDURE salary_calculation
AS
BEGIN
-- Don't return a result set, and ensure any error rolls back the entire transaction
SET NOCOUNT, XACT_ABORT ON;
-- Best practice is explicit joins
SELECT *
FROM Attendance
INNER JOIN EMPS ON attendance.emp_id = emps.emp_id;
INSERT INTO Attendance(SALARY)
SELECT DATEDIFF(HOUR, CURRENT_TIMESTAMP, CAST(' 10:10:00 PM' AS TIME))*EMPS.money_per_hour)
FROM EMPS;
-- Return a status code, 0 all is well
RETURN 0;
END;
GO
仅供参考,现在是2021年;您有29年的时间采用ANSI-92连接语法。为什么你还在使用32年前的隐式连接语法?是的,我想这可以做到。我知道这可能有点陈词滥调,但我是sql新手。这就是为什么我找不到它,真的感谢你的帮助help@RanySamergaber你熟悉接受答案吗?
CREATE PROCEDURE salary_calculation
AS
BEGIN
-- Don't return a result set, and ensure any error rolls back the entire transaction
SET NOCOUNT, XACT_ABORT ON;
-- Best practice is explicit joins
SELECT *
FROM Attendance
INNER JOIN EMPS ON attendance.emp_id = emps.emp_id;
INSERT INTO Attendance(SALARY)
SELECT DATEDIFF(HOUR, CURRENT_TIMESTAMP, CAST(' 10:10:00 PM' AS TIME))*EMPS.money_per_hour)
FROM EMPS;
-- Return a status code, 0 all is well
RETURN 0;
END;
GO