首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server :在DB中创建过程而不使用[GO]

Server :在DB中创建过程而不使用[GO]
EN

Stack Overflow用户
提问于 2017-10-04 15:29:15
回答 1查看 432关注 0票数 0

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

代码语言:javascript
复制
USE [Journal]
[GO]

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

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

代码语言:javascript
复制
USE [Journal];

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

现在我们得到了错误:

创建/更改过程“必须是查询批处理中的第一条语句。

所以让我们试试这个:

代码语言:javascript
复制
CREATE PROCEDURE [Journal].[dbo].[EventDelete]
    @NotificationID INT
AS
    DELETE Notification
    WHERE NotificationID = @NotificationID;

现在我们得到

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

当然,如果没有任何DB声明,它就会尝试附加到主错误:

在数据库“主”中拒绝创建过程权限。

EN

回答 1

Stack Overflow用户

发布于 2017-10-04 15:29:15

因此,写这个问题真的能让自己的思想变得清晰。

原因是存储过程需要在一个批处理中创建,该批处理意味着,没有其他任何内容。

使用USE [Journal]方法作为一个批处理执行.batch('USE [Journal]'),然后将SQLtoCREATE PROCEDUCE作为一个新的.batch(...)执行,依次执行。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46568662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档