2016-12-07 1 views
1

Я создаю эту таблицу, но я бегу в проблемы с первой процедуры (sp_joseview)«CREATE PROCEDURE» должен быть единственным оператором в партии (ERRO)

create table josecustomer(
name varchar(50), 
address varchar(300), 
ssnid int, 
balance bigint, 
accountnumber bigint 
) 

insert into josecustomer values('Aman','Canada',10000,5000,100000000) 
insert into josecustomer values('Shubham','USA',10001,6000,200000000) 
insert into josecustomer values('Himanshu','Australia',10002,2000,300000000) 
insert into josecustomer values('Jose','India',10003,3000,400000000) 
insert into josecustomer values('Albert','Brazil',10004,4000,500000000) 
insert into josecustomer values('Peterson','Germany',10005,7000,600000000) 
insert into josecustomer values('Adam','Honkong',10006,8000,700000000) 
insert into josecustomer values('William','Paris',10007,9000,800000000) 

select * from josecustomer 

create proc sp_joseview 
as begin 
select * from josecustomer 
end 
go 

create proc sp_updatejose 
(@accountno bigint,@newbalance bigint) 
as begin 
update josecustomer 
set [email protected] 
where [email protected] 
end 
go 

Существует синтаксис ошибка для первой процедуры, но я не могу понять, что это за ошибка.

+5

Что сбивает с толку ошибка? Это один из самых явных из sql-сервера. – HoneyBadger

+5

Положите 'Go' после вашего' Select * from josecustomer'. Ошибка является само собой разумеющейся ... – Siyual

+0

добавьте «как начало» и «конец» для первой хранимой процедуры - в дополнение к «Go», рекомендованному ранее. – PawelCz

ответ

6

Ошибка не требует пояснений - вы не можете выдать заявление CREATE PROCEDURE, если это не единственное утверждение в партии.

В SSMS GO ключевого слово разделяет заявление на отдельную партию, так что вы должны добавить один после заявления перед CREATE PROCEDURE:

create table josecustomer(
name varchar(50), 
address varchar(300), 
ssnid int, 
balance bigint, 
accountnumber bigint 
) 

insert into josecustomer values('Aman','Canada',10000,5000,100000000) 
insert into josecustomer values('Shubham','USA',10001,6000,200000000) 
insert into josecustomer values('Himanshu','Australia',10002,2000,300000000) 
insert into josecustomer values('Jose','India',10003,3000,400000000) 
insert into josecustomer values('Albert','Brazil',10004,4000,500000000) 
insert into josecustomer values('Peterson','Germany',10005,7000,600000000) 
insert into josecustomer values('Adam','Honkong',10006,8000,700000000) 
insert into josecustomer values('William','Paris',10007,9000,800000000) 

select * from josecustomer 
Go --Add a Go here 

create proc sp_joseview 
as begin 
select * from josecustomer 
end 
go 

create proc sp_updatejose 
(@accountno bigint,@newbalance bigint) 
as begin 
update josecustomer 
set [email protected] 
where [email protected] 
end 
go 
3

Ключевое слово GO разделяет партию в одном сценарии. Ошибка говорит о том, что CREATE PROCEDURE должен быть «единственным» оператором в партии, поэтому, по вашему мнению, вам не хватает GO выше CREATE PROCEDURE.

Теперь посмотрим на ваш сценарий, его разделяют на 4 широкие области

  1. создать таблицу
  2. вставить данные (и выберите его снова)
  3. создать прок 1
  4. создать процедурный 2

Его ясно, что вы пропускаете go между 2 и 3.