【发布时间】:2020-05-08 09:37:00
【问题描述】:
我有一个大约有 1000 个条目的表员工,我必须创建一个接受参数的存储过程。该参数很可能是我创建的“AS Table”类型。将表变量传递到存储过程后,它应该更新特定列中的某些值,并且更改应该反映在原始 Employee 表中。
我尝试了以下步骤:
USE testDB
GO
CREATE TYPE dbo.UpdateTableType AS TABLE(Id BIGINT NULL, Designation varchar(50) NULL, Salary varchar(50) NULL)
DECLARE @employeeTable TABLE(Id BIGINT, Designation varchar(50), Salary varchar(50))
INSERT INTO @employeeTable
VALUES
(2, 'Sales', '$8002'),
(7, 'Sales DPO', '$8007'),
(9, 'Sales Mgr', '$8009')
Select * from @employeeTable
以上是针对表格类型和表格变量的
现在,对于我尝试过的存储过程,
CREATE PROCEDURE updateEmpDetails
@UpdateType UpdateTableType READONLY
AS
BEGIN
UPDATE dbo.employee
SET
dbo.employee.Designation = @UpdateType.Designation,
dbo.employee.Salary = @UpdateType.Salary
WHERE
@UpdateType.Id = dbo.employee.[Employee ID]
END
Msg 137, Level 16, State 1, Procedure updateEmpDetails, Line 7 [Batch Start Line 2] 必须声明标量变量“@UpdateType”
请帮我看看我哪里出错了。
我需要使用接受表变量的存储过程更新Employee Table。
如果可能,请向我提供相同的正确代码。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: sql sql-server sql-server-2008 stored-procedures