select ... for update和update where的使用

[复制链接]
查看11 | 回复3 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
在存储过程中可以用
cursor c is
select .. for update;
update ... where current of c;
如果在client程序中怎么使用?
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
什么意思?
猜测你是想 对符合某一条件的record作修改,如不用procedure,就用 循环呗
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
可以了,我刚写了个例子
#include
#include
void sqlerror();
EXEC SQL BEGIN DECLARE SECTION;
char connstr[80];
VARCHAR ov_ename[10];
EXEC SQL END DECLARE SECTION;
int main() {
printf("Please input user/pass@serv\nOracle Login:&quot

;
scanf("%60s",connstr);
EXEC SQL WHENEVER SQLERROR DO sqlerror();
EXEC SQL WHENEVER SQLWARNING CONTINUE;
EXEC SQL CONNECT :connstr;
EXEC SQL DECLARE oc_emp CURSOR FOR

SELECT ename

FROM emp

WHERE empno<7800

FOR UPDATE;
EXEC SQL OPEN oc_emp;
EXEC SQL WHENEVER NOT FOUND DO break;
for (;

{

EXEC SQL FETCH oc_emp INTO

v_ename;

ov_ename.arr[ov_ename.len] ='\0';

printf("%20s\n",ov_ename.arr);

EXEC SQL UPDATE emp set sal=1234

WHERE CURRENT OF oc_emp;
}
EXEC SQL CLOSE oc_emp;
EXEC SQL COMMIT WORK RELEASE;
return 0;
}
void sqlerror() {
printf("OraErr:%70s\n", sqlca.sqlerrm.sqlerrmc);
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK WORK RELEASE;
exit (1);
}


回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层


谢谢,偶倒学会了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行