Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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语法不正确;GO';_Sql_Ssms - Fatal编程技术网

靠近'的SQL语法不正确;GO';

靠近'的SQL语法不正确;GO';,sql,ssms,Sql,Ssms,我在存储过程中遇到了错误,我无法找出原因。我看了其他几乎相同的问题,像这样的问题,答案对我来说不起作用。语法错误出现在数据库创建之后的“Go”处 USE [DATABASENAME] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[Sproc] @Id int AS BEGIN SET NOCOUNT ON; IF NOT EXISTS (SELECT name FROM sys.dat

我在存储过程中遇到了错误,我无法找出原因。我看了其他几乎相同的问题,像这样的问题,答案对我来说不起作用。语法错误出现在数据库创建之后的“Go”处

USE [DATABASENAME]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Sproc]
@Id int
AS
BEGIN

SET NOCOUNT ON;

IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = 
N'Name')

create database Name;

GO

CREATE TABLE [Name].[dbo].[Account](
[Id] [int] IDENTITY(1,1) NOT NULL,
[AccountId] [int] NOT NULL
);

存储过程中不允许使用
GO
。它分离批次,而过程本身就是一个不能分离的批次

可以使用一个过程创建数据库,然后使用第二个过程创建表

编辑

实际上,您可以通过一个过程完成:

CREATE PROCEDURE [dbo].[Sproc]
AS
BEGIN

EXEC ('USE [Master]; CREATE DATABASE [name]')
EXEC ('USE [Name]; CREATE TABLE [name].dbo.[Account] (id int)')

END

GO
不是限定的sql语句。。这是一个独立sql语句的批处理分隔符我明白,但我需要将数据库创建和表创建分开,否则我将得到一个“数据库不存在错误”。然后您不需要
GO
@Alfabravo您知道您的建议吗?@Alfabravo抱歉,这只是过程开头的一个片段。它很长,圣坛是关着的。另外,“@Id”不是一个变量,而是一个参数。我想这可能是最好的方法。谢谢你的推荐!