Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我正在尝试查找无法绑定多部分标识符的原因_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 我正在尝试查找无法绑定多部分标识符的原因

Sql 我正在尝试查找无法绑定多部分标识符的原因,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图创建一个存储过程,但出现了一个错误 无法绑定多部分标识符 它显示了我在标题中提到的错误,当然我试图找到一个解决方案,但我不能 当我试图删除表规范“emps.money\u per\u hour”时,它给了我无效的列名错误,尽管我很确定它不是 只是一些额外的信息(有两个表出席和EMP emps中有货币兑换率和id,出勤率中有参考id、入职时间和出勤时间,因此该程序应使用这两个参数计算工资)您使用的是insert语句的值形式,不允许您引用表。如果希望引用在insert语句之后而不是之前从表中选

我试图创建一个存储过程,但出现了一个错误

无法绑定多部分标识符

它显示了我在标题中提到的错误,当然我试图找到一个解决方案,但我不能

当我试图删除表规范“emps.money\u per\u hour”时,它给了我无效的列名错误,尽管我很确定它不是

只是一些额外的信息(有两个表出席和EMP
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