【发布时间】:2020-11-26 10:14:33
【问题描述】:
CREATE TABLE [dbo].[SupplierTableType](
[Supplier_ID] [nvarchar](10) NULL,
[Supplier_Name] [nvarchar](50) NULL,
[Address1] [nvarchar](30) NULL,
[Address2] [nvarchar](30) NULL,
[Address3] [nvarchar](30) NULL,
)
GO
--------------------Procedure----------------------
CREATE PROCEDURE [dbo].[Update_SupplierTable]
@TblSupplierTable SupplierTableType READONLY
AS
BEGIN
SET NOCOUNT ON;
MERGE INTO SupplierTable c1
USING @TblSupplierTable c2
ON c1.Supplier_ID=@TblSupplierTable.Supplier_ID
WHEN MATCHED THEN
UPDATE SET
c1.[Supplier_Name]= c2.[Supplier_Name]
, c1.[Address1]=c2.[Address1]
, c1.[Address2]=c2.[Address2]
, c1.[Address3]=c2.[Address3]
WHEN NOT MATCHED THEN
INSERT VALUES( @TblSupplierTable.[Supplier_Name],
c2.[Address1],
c2.[Address2],
c2.[Address3]
);
END
消息 2715,级别 16,状态 3,过程 Update_SupplierTable,第 3 行 [批处理开始第 56 行] 列、参数或变量 #1:找不到数据类型 SupplierTableType。 参数或变量“@TblSupplierTable”的数据类型无效。 消息 1087,级别 16,状态 1,过程 Update_SupplierTable,第 8 行 [批处理开始第 56 行] 必须声明表变量“@TblSupplierTable”。
【问题讨论】:
-
顺便说一句,没有提示,MERGE 不是原子的......
标签: sql sql-server