sql-server – SQL错误:关键字“结束”附近的语法不正确
发布时间:2020-12-12 06:36:38 所属栏目:MsSql教程 来源:网络整理
导读:需要有关此SQL Server 2000过程的帮助.问题变得困难,因为我正在通过Oracle SQL Developer测试程序. 我正在运行程序,使用Varchar格式的新数字序列迭代列,以获得具有空值的人. 但我一直收到错误,所以a)我可能做错了方法b)由于使用的版本语法不正确.我主要是Orac
需要有关此SQL Server 2000过程的帮助.问题变得困难,因为我正在通过Oracle SQL Developer测试程序.
我正在运行程序,使用Varchar格式的新数字序列迭代列,以获得具有空值的人. 但我一直收到错误,所以a)我可能做错了方法b)由于使用的版本语法不正确.我主要是Oracle用户. 我一直得到错误:SQL错误:关键字“结束”附近的语法不正确.这没有足够的帮助解决它.结束指的是程序中最后一个’结束’. 任何帮助将不胜感激. 这是程序. ALTER PROCEDURE [dbo].[OF_AUTOSEQUENCE] @JvarTable Varchar(250),@varColumn Varchar(250),@optIsString char(1),@optInterval int AS /* Procedure OF_AUTOSEQUENCE Created by Joshua [Surname omitted] When 20100902 Purpose To fill up column with new sequence numbers Arguments varTable - Table name varColumn - Column name optIsString - Option: is it string or numeric,either use T(rue) or F(alse) optInterval - Steps in increment in building new sequence (Should be 1 (one)) Example script to begin procedure EXECUTE [dbo].[OF_AUTOSEQUENCE] 'dbo.EH_BrownBin','Match','T',1 Any questions about this,please send email to [business email omitted] */ declare @topseed int,@stg_topseed varchar(100),@Sql_string nvarchar(4000),@myERROR int,@myRowCount int set @Sql_string = 'Declare MyCur CURSOR FOR select ' + @varColumn + ' from ' + @JvarTable + ' where ' + @varColumn + ' is null' Exec sp_executesql @Sql_string SET NOCOUNT ON Begin if @optIsString = 'T' 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) ENd else Begin set @Sql_string = 'select top 1 ' + @varColumn + ' from ' + @JvarTable + ' order by ' + @varColumn + ' desc' set @topseed = @Sql_string ENd -- SELECT @myERROR = @@ERROR,@myRowCOUNT = @@ROWCOUNT -- IF @myERROR != 0 GOTO HANDLE_ERROR open MyCur fetch next from MyCur WHILE @@FETCH_STATUS = 0 set @topseed = @topseed + @optInterval if @optIsString = 'T' begin set @Sql_string = 'update ' + @JvarTable + ' set ' + @varColumn + ' = cast((' + @topseed + ') as char) where current of ' + MyCur exec (@Sql_string) ENd else begin set @Sql_string = 'update ' + @JvarTable + ' set ' + @varColumn + ' = ' + @topseed + ' where current of ' + MyCur exec (@Sql_string) ENd fetch next from MyCur ENd -- SELECT @myERROR = @@ERROR,@myRowCOUNT = @@ROWCOUNT -- IF @myERROR != 0 GOTO HANDLE_ERROR --HANDLE_ERROR: --print @myERROR CLOSE MyCur DEALLOCATE MyCur End 解决方法你在WHILE之后就错过了一个开头.你缩进就像你想要一个块(多个语句)在while循环中,甚至有一个结束,但没有开始.做了: ... open MyCur fetch next from MyCur WHILE @@FETCH_STATUS = 0 begin --<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<add this set @topseed = @topseed + @optInterval if @optIsString = 'T' begin set @Sql_string = 'update ' + @JvarTable + ' set ' + @varColumn + ' = cast((' + @topseed + ') as char) where current of ' + MyCur exec (@Sql_string) ENd else begin set @Sql_string = 'update ' + @JvarTable + ' set ' + @varColumn + ' = ' + @topseed + ' where current of ' + MyCur exec (@Sql_string) ENd fetch next from MyCur ENd ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用从别的机器拷贝来的SqlServer2000 mdf文件恢复数据库
- sqlserver 18456
- sqlserver 锁定一行数据,禁止读取,修改和删除
- sqlserver 之SELECT INTO 和 INSERT INTO SELECT 两种表复制
- sql-server – 将SQL Server备份到UNC
- 关于sqlServer [Microsoft][SQLServer 2000 Driver for JDB
- sql-server – 将Float转换为Decimal(SQL Server)
- SqlServer系列笔记――数据类型
- SQL增加一个数字
- SQL Server 2008事务复制’缺少结束注释标记’* /”