declare @cateid decimal
select @cateid=207
declare updatecateid cursor for select cate_id from newscategorys for update of cate_id
open updatecateidWHILE @@FETCH_STATUS = 0
BEGIN FETCH NEXT FROM updatecateid
select updatecateid=@cateid
select @cateid=@cateid+1
ENDCLOSE updatecateid
deallocate updatecateid
知道了怎么更新了,可是游标更新了数据库里的值并没有更新,游标不可以更新数据库里的值吗
select @cateid=207
declare updatecateid cursor for select cate_id from newscategorys for update of cate_id
open updatecateidWHILE @@FETCH_STATUS = 0
BEGIN FETCH NEXT FROM updatecateid
select updatecateid=@cateid
select @cateid=@cateid+1
ENDCLOSE updatecateid
deallocate updatecateid
知道了怎么更新了,可是游标更新了数据库里的值并没有更新,游标不可以更新数据库里的值吗
解决方案 »
- 不理解的错误提示
- 存储过程,在查询的结果中查询
- 求如何使用事件探查器跟踪一个存储过程的运行
- 一个SQL语句问题
- SQL发送邮件一定需要OutLook2003吗?为什么OutLook2002不能接受SQL已经发送的信息呢?
- OLEDB provider 'Microsoft.Jet.OLEDB.4.0' reported an error是什么原因引起的
- 请教各位兄台
- 关于sql2000远程访问的问题!!愁死我了!
- Access更新索引,头痛了
- 怎样些一条SQL实现如下功能:
- 我想用程序把sql server的一表的列的定义(特别是列的文字描述)导出来,
- 期末考试数据库老师说要考怎样把SQL语言扩展到面向对象数据库中,哪位大虾知道相关知识麻烦回一下啊,或提供些网址吧,谢谢啦!
create table newscategorys(id int identity(1,1),cate_id decimal)
insert into newscategorys
select 1
union all select 2
union all select 3
go--定义更新处理的游标
declare updatecateid cursor for select id from newscategorys for update of cate_id
open updatecateiddeclare @id int
FETCH NEXT FROM updatecateid into @id
WHILE @@FETCH_STATUS = 0
BEGIN
update newscategorys set cate_id=cate_id+1 where id=@id
FETCH NEXT FROM updatecateid into @id
ENDCLOSE updatecateid
deallocate updatecateid
goselect * from newscategorys
drop table newscategorys/*--测试结果id cate_id
----------- --------------------
1 2
2 3
3 4(所影响的行数为 3 行)
--*/
-- Declare and using an UPDATE cursor
-- =============================================
DECLARE <@variable_1, sysname, @v1> <datatype_for_variable_1, sysname, varchar(20)>,
<@variable_2, sysname, @v2> <datatype_for_variable_2, sysname, varchar(40)>DECLARE <cursor_name, sysname, test_cursor> CURSOR
FOR SELECT <column_1, sysname, au_fname>, <column_2, sysname, au_lname> FROM <table_name, sysname, pubs.dbo.authors>
FOR UPDATE of <column_1, sysname, au_fname>DECLARE @count smallint
SELECT @count = 1OPEN <cursor_name, sysname, test_cursor>
FETCH NEXT FROM <cursor_name, sysname, test_cursor> INTO <@variable_1, sysname, @v1>, <@variable_2, sysname, @v2>WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
-- PRINT 'add user-defined code here...'
-- eg
PRINT 'updating record of ' + @v1 + ' ' + @v2
UPDATE pubs.dbo.authors
SET au_fname = @v1 + '-' + CAST(@count AS varchar(4))
WHERE au_lname = @v2
END
FETCH NEXT FROM <cursor_name, sysname, test_cursor> INTO <@variable_1, sysname, @v1>, <@variable_2, sysname, @v2>
SELECT @count = @count + 1
ENDCLOSE <cursor_name, sysname, test_cursor>
DEALLOCATE <cursor_name, sysname, test_cursor>
GO