0

我想使用node-mssql在 SQL Server 2017 中执行的这个(简化的)查询:

USE [Journal]
[GO]

CREATE PROCEDURE [dbo].[EventDelete]
    @NotificationID INT
AS
    DELETE Notification
    WHERE NotificationID = @NotificationID
[GO]

node-mssql使用和需要分号声明语法错误[GO],因此我尝试这个:

USE [Journal];

CREATE PROCEDURE [dbo].[EventDelete]
    @NotificationID INT
AS
    DELETE Notification
    WHERE NotificationID = @NotificationID;

现在我们得到错误:

CREATE/ALTER PROCEDURE' 必须是查询批处理中的第一条语句。

所以让我们试试这个:

CREATE PROCEDURE [Journal].[dbo].[EventDelete]
    @NotificationID INT
AS
    DELETE Notification
    WHERE NotificationID = @NotificationID;

现在我们得到

RequestError:“CREATE/ALTER PROCEDURE”不允许将数据库名称指定为对象名称的前缀。

自然地,没有任何 DB 声明,它会尝试附加到主错误:

数据库“master”中的 CREATE PROCEDURE 权限被拒绝。

4

1 回答 1

0

因此,写下这个问题确实有助于理清思路。

原因是存储过程需要在一批中创建,[GO] 表示,没有别的。

USE [Journal]使用该方法作为一批执行,然后按顺序.batch('USE [Journal]')将 SQLCREATE PROCEDUCE作为新的执行。.batch(...)

除非 node-mssql 中有另一种允许多批次执行的方法?

于 2017-10-04T15:29:15.670 回答