Здравствуйте.
Есть код, который работает сам по себе, но не удается поместить его в хранимую процедуру. SQl Server 2008
USE STG3;
go
create proc [dbo].[nrv_test] as
begin
drop table #t;
go
select 1 as val into #t;
if (SELECT COUNT(*) from #t) > 0
raiserror('error number 1!!',16,1);
drop table #t;
go
select 2 as val into #t;
if (SELECT COUNT(*) from #t) > 0
raiserror('error number 2!!',16,1);
end
Ошибка
Incorrect syntax near ';'
There is already an object named '#t' in the database.
Incorrect syntax near 'end'.
UPD: пока гуглил узнал, что go в хранимых процедурах использлвать нельзя, проблему это не отменяет, просто формулировка чуть-чуть другая:
USE STG3;
go
create proc [dbo].[nrv_test] as
begin
drop table #t_nrv
select 1 as val into #t_nrv
if (SELECT COUNT(*) from #t_nrv) > 0
raiserror('error number 1!!',16,1)
drop table #t_nrv
select 2 as val into #t_nrv
if (SELECT COUNT(*) from #t_nrv) > 0
raiserror('error number 2!!',16,1)
end
Ошибка
There is already an object named '#t_nrv' in the database
Как заставить SQL Server понять что до того как пойдет select into, таблица будет уже дропнута, при том что код должен быть в хранимой процедуре и go там использовать нельзя