错误:消息102,级别15,状态1,过程InsertCustomers,第30行'THROW'附近的语法不正确
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误:消息102,级别15,状态1,过程InsertCustomers,第30行'THROW'附近的语法不正确相关的知识,希望对你有一定的参考价值。
我有一个名为Sales.Customers的表,其中包含以下列:custid, companyname, contactname, contacttitle, address, city, postalcode, country, phone, fax
。我需要创建一个名为'Sales.InsertCustomers'的存储过程,将数据插入Customers表。存储过程必须满足以下要求:
- 数据更改作为单个工作单元发生。
- 提交成功的数据修改并返回值O.
- 回滚不成功的数据修改。异常严重性级别设置为16,并返回值-1。
- 存储过程使用内置标量函数来评估数据修改的当前条件。
- 如果在执行存储过程期间发生运行时错误,则终止并回滚整个工作单元。
以下是代码:
CREATE PROCEDURE Sales.InsertCustomers
@Companyname nvarchar(100),
@ContactName nvarchar(100),
@Contacttitle nvarchar(100),
@Address nvarchar(100),
@City nvarchar(80),
@PostalCode nvarchar(20),
@country nvarchar(50),
@phone nvarchar(20),
@fax nvarchar(20)
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO Sales.Customers(companyname, contactname, contacttitle, address, city, postalcode, country, phone, fax)
VALUES(@Companyname, @ContactName, @Contacttitle, @Address, @City, @PostalCode, @country, @phone, @fax)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION
PRINT 'Unable to create a customer record.'
THROW
RETURN -1
END CATCH
RETURN 0
END;
当我运行代码时,我收到此错误:
消息102,级别15,状态1,过程InsertCustomers,第30行'THROW'附近的语法不正确。
我怎样才能解决这个问题?
请参阅this链接。
THROW语句之前的语句必须后跟分号(;)语句终止符。
所以你的PRINT
声明应以分号结尾。
PRINT 'Unable to create a customer record.';
或者你可以做。
;THROW
以上是关于错误:消息102,级别15,状态1,过程InsertCustomers,第30行'THROW'附近的语法不正确的主要内容,如果未能解决你的问题,请参考以下文章
消息 102,级别 15,状态 1,过程 CaDataGroup_Insert,第 88 行 '=' 附近的语法不正确
消息 102,级别 15,状态 1,第 3 行“,”附近的语法不正确 [重复]
消息 102,级别 15,状态 1,第 1 行“日期”附近的语法不正确。在更新查询中[关闭]
消息 443,级别 16,状态 15,过程 myinsert,第 6 行 在函数内对带副作用的运算符 ‘INSERT‘ 的使用无效。