Неверный синтаксис SQL рядом с GO - PullRequest
0 голосов
/ 04 мая 2018

Я получаю ошибку в своем sproc и не могу понять, почему. Я смотрел на другие, почти идентичные вопросы, подобные этому Здесь , и ответы не помогают мне. синтаксическая ошибка находится в «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
);

1 Ответ

0 голосов
/ 04 мая 2018

GO не допускается в хранимых процедурах. Он разделяет партии, а сама процедура - это одна партия, которую нельзя разделить.

Вы можете использовать одну процедуру для создания базы данных, затем вторую процедуру для создания таблицы.

Редактировать

На самом деле вы можете сделать это за одну процедуру:

CREATE PROCEDURE [dbo].[Sproc]
AS
BEGIN

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

END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...