SQL 服务器存储过程 - 更新一个 table 并插入另一个 table
SQL Server stored procedure - update one table and insert into another table
我有一个存储过程,其编码类似于以下内容:
USE [database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[procedure_name]
@record_id int
, @record_value VARCHAR(MAX)
AS
BEGIN
UPDATE dbo.table_1
SET table_1_record_value = @record_value
WHERE table_1_record_int = @record_int
END
BEGIN
INSERT INTO table_2 COLUMNS (table_2_record_id, table_2_record_value) VALUES (@record_id, @record_value)
END
我遇到语法错误。我从来没有为可以同时完成 UPDATE 和 INSERT 语句的应用程序编写存储过程。
bbaird在评论中给出了答案。删除 BEGIN/END 关键字解决了这个问题。谢谢!
bbaird 的完整评论如下:
- 如果程序尚未创建,您将需要执行 CREATE PROCEDURE。 2.update和insert语句是独立的,除非有条件,否则不需要将它们放在自己的BEGIN...END块中。 3. 插入语句中的 COLUMNS 也可能会丢失东西 - 没有必要,所以将其删除。
Jake 和 bbard 的答案是正确的。
在您的存储过程代码下方:
USE [database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE OR ALTER PROC [dbo].[procedure_name]
@record_id int
, @record_value VARCHAR(MAX)
AS
BEGIN
UPDATE dbo.table_1
SET table_1_record_value = @record_value
WHERE table_1_record_int = @record_int
INSERT INTO table_2 COLUMNS (table_2_record_id, table_2_record_value)
VALUES (@record_id, @record_value)
END
有关 BEGIN
和 END
的文档,请查看 here
我有一个存储过程,其编码类似于以下内容:
USE [database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[procedure_name]
@record_id int
, @record_value VARCHAR(MAX)
AS
BEGIN
UPDATE dbo.table_1
SET table_1_record_value = @record_value
WHERE table_1_record_int = @record_int
END
BEGIN
INSERT INTO table_2 COLUMNS (table_2_record_id, table_2_record_value) VALUES (@record_id, @record_value)
END
我遇到语法错误。我从来没有为可以同时完成 UPDATE 和 INSERT 语句的应用程序编写存储过程。
bbaird在评论中给出了答案。删除 BEGIN/END 关键字解决了这个问题。谢谢!
bbaird 的完整评论如下:
- 如果程序尚未创建,您将需要执行 CREATE PROCEDURE。 2.update和insert语句是独立的,除非有条件,否则不需要将它们放在自己的BEGIN...END块中。 3. 插入语句中的 COLUMNS 也可能会丢失东西 - 没有必要,所以将其删除。
Jake 和 bbard 的答案是正确的。 在您的存储过程代码下方:
USE [database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE OR ALTER PROC [dbo].[procedure_name]
@record_id int
, @record_value VARCHAR(MAX)
AS
BEGIN
UPDATE dbo.table_1
SET table_1_record_value = @record_value
WHERE table_1_record_int = @record_int
INSERT INTO table_2 COLUMNS (table_2_record_id, table_2_record_value)
VALUES (@record_id, @record_value)
END
有关 BEGIN
和 END
的文档,请查看 here