数据库语句修改一整列的数据

数据库语句修改一整列的数据,第1张

oracle这样是可以的,SQLserver这样貌似不行

在SQLserver中,要实现这样的功能只能用游标,代码如下:

createprocereUpdateValue--存储过程里面放置游标

as

begin

declarecursor--声明一个游标,查询满足条件的数据

forselect主键,SD_VALfromEQ_SD_D

open--打开

declare@主键int,@SD_VALnvarchar(20)--声明一个变量,用于读取游标中的值

fetchnextfrominto@主键,@SD_VAL

while@@fetch_status=0--循环读取

begin

updateEQ_SD_Dsetname=@SD_VALwhereid=@主键

fetchnextfrominto@主键,@SD_VAL

end

close--关闭

deallocate--删除

end

你把游标类型和游标位置改一下应该就可以了

用静态的客户端游标

DBRecordsetCursorType = adOpenStatic

DBRecordsetCursorLocation = adUseClient

试试:

CREATE PROCEDURE ADD100 AS

declare t_socre platformtest02score% type

declare sql varchar(max)

declare c_cursor cursor for

select score from platformtest02 where mod(id,2)=0

open c_cursor

fetch next from c_cursor into t_score

while(@@fetch_status=0)

begin

set sql='update platformtest02 set score=t_score where current of c_cursor'

exec (sql)

fetch next from c_cursor into t_score ---------------你少了这行

end

close c_cursor

deallocate c_cursor

游标的记录数不是可以直接count()出来的么?你用计数器计也行啊,还有去掉里面的记录的方法很多啊,在便利的时候把它拼成一个条件啊,或者直接用你的游标条件去删啊等等。这些做成函数意义不大,不过应该可以实现吧~~

本文主要介绍的是Oracle游标提取相关的数据的实际 *** 作方案 首先我们要从Oracle游标中得到一行相关的数据 我个人提议你使用FETCH命令 当每一次提取数据后 Oracle游标都指向结果集的下一行 语法如下

FETCH cursor_name INTO variable[ variable ]

对于SELECT定义的Oracle游标的每一列 FETCH变量列表都应该有一个变量与之相对应 变量的类型也要相同

SET SERVERIUTPUT ON

DECLARE

v_ename EMP ENAME%TYPE;

v_salary EMP SALARY%TYPE;

CURSOR c_emp IS SELECT ename salary FROM emp;

BEGIN

OPEN c_emp;

FETCH c_emp INTO v_ename v_salary;

DBMS_OUTPUT PUT_LINE( Salary of Employee || v_ename

|| is || v_salary);

FETCH c_emp INTO v_ename v_salary;

DBMS_OUTPUT PUT_LINE( Salary of Employee || v_ename

|| is || v_salary);

FETCH c_emp INTO v_ename v_salary;

DBMS_OUTPUT PUT_LINE( Salary of Employee || v_ename

|| is || v_salary);

CLOSE c_emp;

END

这段代码无疑是非常麻烦的 如果有多行返回结果 可以使用循环并用Oracle游标属性为结束循环的条件 以这种方式提取数据 程序的可读性和简洁性都大为提高 下面我们使用循环重新写上面的程序

SET SERVERIUTPUT ON

DECLARE

v_ename EMP ENAME%TYPE;

v_salary EMP SALARY%TYPE;

CURSOR c_emp IS SELECT ename salary FROM emp;

BEGIN

OPEN c_emp;

LOOP

FETCH c_emp INTO v_ename v_salary;

EXIT WHEN c_emp%NOTFOUND;

DBMS_OUTPUT PUT_LINE( Salary of Employee || v_ename

|| is || v_salary);

END

lishixinzhi/Article/program/Oracle/201311/18889

以上就是关于数据库语句修改一整列的数据全部的内容,包括:数据库语句修改一整列的数据、如何得到RecordSet中记录的条数、数据库游标问题求修改等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10092413.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存