【发布时间】:2018-01-20 21:15:15
【问题描述】:
我在运行 sql server 存储过程时遇到问题。我使用动态sql。 我收到错误“必须声明标量变量“@EmployeeId”。
SQL 查询
ALTER PROCEDURE [dbo].[GetLeaveDays] -- Add the parameters for the stored
procedure here
@LeaveType varchar(5000),
@AdminId int,
@EmployeeId int
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@queryString nvarchar(MAX);
SET @queryString = 'SELECT ' + @LeaveType + ' FROM CompulsoryLeave WHERE
AdminId = @AdminId AND Id=(SELECT LeaveStructureId FROM Employee WHERE
Id=@EmployeeId)';
EXECUTE sp_executesql @queryString,
N'@AdminId int',
N'@EmployeeId int',
@AdminId = @AdminId,
@EmployeeId=@EmployeeId
END
【问题讨论】:
-
Bobby Tables 迫不及待想要获得
@LeaveType。您可能希望根据表中的列对其进行验证,除非您需要更有趣的东西,例如表达式。如果它是列列表,那么您可以将其拆分并单独验证它们。
标签: sql sql-server tsql