Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server ';创建/更改程序';必须是查询批处理中的第一条语句_Sql Server_Stored Procedures - Fatal编程技术网

Sql server ';创建/更改程序';必须是查询批处理中的第一条语句

Sql server ';创建/更改程序';必须是查询批处理中的第一条语句,sql-server,stored-procedures,Sql Server,Stored Procedures,我试图在数据库中创建一个名为DB\u Interface的存储过程,如下所示: USE [DB_Interface] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE OR ALTER PROCEDURE [dbo].[ProcToCCreate] 它抛出错误: 味精156,第15级,状态1,第6行 关键字“或”附近的语法不正确 味精111,第15级,状态1,第10行 “CREATE/ALTER PROCEDURE”必须是

我试图在数据库中创建一个名为
DB\u Interface
的存储过程,如下所示:

USE [DB_Interface]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE OR ALTER PROCEDURE [dbo].[ProcToCCreate]
它抛出错误:

味精156,第15级,状态1,第6行
关键字“或”附近的语法不正确

味精111,第15级,状态1,第10行
“CREATE/ALTER PROCEDURE”必须是查询批处理中的第一条语句`

这是我的第一个存储过程-不确定我是否不能像使用它那样使用
Create
Alter
。非常感谢您的帮助

CREATE  PROCEDURE [dbo].[ProcToCCreate]

只有SQL Server中的语法有效

如果您想
更改
过程,以下是语法

 ALTER  PROCEDURE [dbo].[ProcToCCreate]

创建:

USE [DB_Interface]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ProcToCCreate]

AS

RETURN
    USE [DB_Interface]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    ALTER PROCEDURE [dbo].[ProcToCCreate]

    AS

    RETURN
改变:

USE [DB_Interface]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ProcToCCreate]

AS

RETURN
    USE [DB_Interface]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    ALTER PROCEDURE [dbo].[ProcToCCreate]

    AS

    RETURN

在SQL Server 2016(可能)中允许使用语法(仅在SQL Server 2016上使用SP1进行测试)

ORACLE
中可能不在
MSSQL
中。对于
MSSQL
您必须使用
CREATE PROCEDURE[spname]或ALTER PROCEDURE[spname]
要么使用
CREATE
ALTER
关键字,这两者之前都没有尝试直接给出ALTER PROCEDURE,但它说的是无效的对象名称。我甚至刷新了本地缓存。所以我试着去创造或改变。有什么问题?
ALTER-PROCEDURE[spname]
只有在存储过程存在的情况下才能工作。或者我可以直接使用ALTER-PROCEDURE吗?@trx:是的,可以。更新了我的答案。我之前试图直接给出ALTER过程,但它说的是无效的对象名。我甚至刷新了本地缓存。所以我试着去创造或改变。可能是什么原因issue@trx:您确定您的进程存在于DB
DB\u接口中吗?