用oracle写了个过程。
如下:
create or replace procedure proc_updateGeography1
is
cursor mycursor is select * from PEC_ZONES_ZIP_CODE;
theRow mycursor%rowType;
strWhere varchar2(40);
begin
for theRow in mycursor loop
update company set GEOGRAPHY = theRow.pec_zones_id where zip ike '% ' ¦ ¦theRow.zip_code ¦ ¦ '% ';
end loop;
end;
存储过程中有一个变量 theRow.zip_code
我想用它来作为查询条件,写在like后面,
我在网上查了好多资料,有的说就现在这个方式就可以,
有的说可以在之前先把%号拼装到变量里 如:strWhere := chr(39) ¦ ¦ theRow.zip_code ¦ ¦ '% ' ¦ ¦ chr(39);
然后写在like后面也可以了,如:..... like strWhere .....
这两种方式我都试过了,执行正常结束,可是一条都没有更新!!
开始我还以为是表里的数据没有匹配的呢!!然后我就特意加了两条测试数据,最终没有被更新!!!
我都愁死了,已经三天了,一直没有找到好的办法解决!!
这是什么原因啊1????各位老大?????小弟先谢了!!
如下:
create or replace procedure proc_updateGeography1
is
cursor mycursor is select * from PEC_ZONES_ZIP_CODE;
theRow mycursor%rowType;
strWhere varchar2(40);
begin
for theRow in mycursor loop
update company set GEOGRAPHY = theRow.pec_zones_id where zip ike '% ' ¦ ¦theRow.zip_code ¦ ¦ '% ';
end loop;
end;
存储过程中有一个变量 theRow.zip_code
我想用它来作为查询条件,写在like后面,
我在网上查了好多资料,有的说就现在这个方式就可以,
有的说可以在之前先把%号拼装到变量里 如:strWhere := chr(39) ¦ ¦ theRow.zip_code ¦ ¦ '% ' ¦ ¦ chr(39);
然后写在like后面也可以了,如:..... like strWhere .....
这两种方式我都试过了,执行正常结束,可是一条都没有更新!!
开始我还以为是表里的数据没有匹配的呢!!然后我就特意加了两条测试数据,最终没有被更新!!!
我都愁死了,已经三天了,一直没有找到好的办法解决!!
这是什么原因啊1????各位老大?????小弟先谢了!!
解决方案 »
- 关于一个比例的SQL语句,我脑子实在转不过弯了,请帮忙
- create session权限与connection权限有什么不同啊
- Oracle查询五个表的SQL语句
- sqlldr控制文件里里表字段的问题
- PLS-00428: 在此 SELECT 语句中缺少 INTO 子句
- 一个简单而又奇怪的问题
- 如何获得某个表空间下各个表的记录数。
- 我的程序中有一个查询,关联到8个表,其中有的几百万条记录,有的几十条,我在查询时都尽量采用带有索引的xx_ID字段进行关联,但结果还是
- 在ORACEL中怎样使用EXISTS判别查询的记录是否存在!在线等待!
- dataguard,主库版本10.2.0.1 rman恢复到备库版本10.2.0.5,备库open read only是报ora-01092
- Toad的SQL Editor里怎么能一次执行多行SQL语句?
- oracle 的安装问题
当第二条更新时会自动提交上一条的信息!
当第二条更新时会自动提交上一条的信息!"
这个理解是错误的!!
你在end loop; 后面加上 commit; 试试。
不同的地方是之前没有用到like,
,现在用到like,想再重新更新一遍!
不过奇怪的是,我之前没有写 commit也更新了一万多条呢!
郁闷,
咳!!!!总之是搞定了!!我很高兴,谢谢
这些都没问题的话,条件再换成 where instr(zip,theRow.zip_code)>0;