我的存储过程(下面)给出了以下错误:
Msg 137,级别15,状态2,服务器ip-172-31-36-11,第2行必须声明标量变量"@Deptno“
CREATE PROCEDURE EmployeesDept
@Deptno char(3)
AS
SELECT lastname AS Name
FROM Employee
WHERE workdept = @Deptno
GO
EXECUTE EmployeesDept @Deptno
GO发布于 2021-05-13 05:44:21
当涉及到执行一个存储过程时,如果您想让它工作,就必须给出参数值,并且您可以按位置或名称执行。您可以直接将值放入其中,也可以将值存储在变量中,并使用这些变量将值赋给存储过程。
--direct values
execute EmployeesDept 'abc', 0 --positional
execute EmployeesDept @Deptno='abc', @whatever=0 --named parameters
--values from variables
DECLARE @n CHAR(3) = 'abc';
DECLARE @i INT = 0;
execute EmployeesDept @n, @i --position based
execute EmployeesDept @Deptno = @n, @whatever = @i --name based基于命名的参数不必按顺序排列,位置参数必须按顺序排列。
创建过程的一个更好的习惯(为了将您的技能带到另一个DB)是这样的:
CREATE PROCEDURE EmployeesDept (
@Deptno char(3)
) AS在参数列表周围加上括号。对于两个或多个args,用逗号分隔。示例:
CREATE PROCEDURE EmployeesDept (
@Deptno char(3),
@whatever INT
) AS还养成了用分号结束存储过程中的每个语句的习惯。
https://stackoverflow.com/questions/67514396
复制相似问题