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中记录的条数、数据库游标问题求修改等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)