У меня возникли проблемы с этой хранимой процедурой, не могли бы вы помочь.SQL Server: ошибка в Cursorless хранимой процедуре
Это ошибка, которую я получаю - запуск всего этого через разработчика Oracle Sql на SQL Server 2000, размещенном в другом месте.
Ошибка
Error starting at line 1 in command:
execute dbo.OF_ASEQ_EH_BROWNBIN 'dbo.EH_Brownbin_Josh','Match', 1
Error report:
Incorrect syntax near the keyword 'BEGIN'.
Процедура
ALTER PROCEDURE [dbo].[OF_ASEQ_EH_BROWNBIN]
@JvarTable Varchar(250),
@varColumn Varchar(250),
@optInterval int
AS
declare @Sql_string nvarchar(4000)
declare @myERROR int
declare @myRowCount int
declare @topseed int
declare @stg_topseed varchar(100)
-- Temp table for rows with nulls in specific column
declare @RowCnt int
declare @MaxRows int
declare @col_Name nvarchar(250)
declare @col_UPRN nvarchar(250)
declare @col_JoinedOn smalldatetime
begin
set @Sql_string = 'select top 1 ' + @varColumn + ' from ' + @JvarTable + ' order by convert(int, ' + @varColumn + ') desc'
set @stg_topseed = @Sql_string
set @topseed = convert(int, @stg_topseed)
SELECT @myERROR = @@ERROR, @myRowCOUNT = @@ROWCOUNT
IF @myERROR != 0 GOTO HANDLE_ERROR
select @RowCnt = 1
declare @Import table
(
rownum int IDENTITY (1, 1) Primary key NOT NULL ,
col_Name nvarchar(250),
col_UPRN nvarchar(250),
col_JoinedOn smalldatetime
)
set @sql_string = 'insert into @Import (col_Name, col_UPRN, col_JoinedOn) select Name, UPRN, JoinedOn from ' + @JvarTable + ' where ' + @varColumn +' is null'
exec @Sql_string
SELECT @myERROR = @@ERROR, @myRowCOUNT = @@ROWCOUNT
IF @myERROR != 0 GOTO HANDLE_ERROR
select @MaxRows=count(*) from @Import
SELECT @myERROR = @@ERROR, @myRowCOUNT = @@ROWCOUNT
IF @myERROR != 0 GOTO HANDLE_ERROR
-- Next new seed
select @topseed = @topseed + @optInterval
<br/>
while @RowCnt <= @MaxRows
begin
select @col_Name = col_Name from @Import where rownum = @RowCnt
select @col_UPRN = col_UPRN from @Import where rownum = @RowCnt
select @col_JoinedOn = col_JoinedOn from @Import where rownum = @RowCnt
set @Sql_string = 'update ' + @JvarTable + ' set ' + @varColumn + ' = cast((' + @topseed + ') as char) where Name = ''' + @col_Name + ''' and UPRN = ''' + @col_UPRN + ''' and JoinedOn = ''' + @col_JoinedOn + ''' '
exec (@Sql_string)
select @topseed = @topseed + @optInterval
Select @RowCnt = @RowCnt + 1
end
SELECT @myERROR = @@ERROR, @myRowCOUNT = @@ROWCOUNT
IF @myERROR != 0 GOTO HANDLE_ERROR
HANDLE_ERROR:
RETURN @myERROR
end
Может немного очистить ваш код; трудно сказать, как выглядит форматирование. Возможно, у вас есть BEGIN и SET на одной строке, или это может быть опечатка. Он также может быть первым предложением ORDER BY, но, как вы его показывали, это довольно грязно. – LittleBobbyTables
Код теперь более аккуратный - Большое спасибо @Martin Smith. Спасибо @LittleBobbyTables за это. Кто-нибудь управляет выяснением, почему я все еще получаю ошибку BEGIN? Благодарю. – Joshua