代码如下
v_field_id varchar2(10);--列名(包括下面4个都是t_gx_rule_detail中的字段)该字段数据如:nation
v_code_segment_start varchar2(10);--校验码段起始位置(该字段数据数据如:1)
v_code_segment_length varchar2(10);--代码长度(该字段数据数据如:3)
v_code_zone_id varchar2(10);--标准代码集标识(该字段数据数据如:001)
type curs is ref cursor;
cu3 curs;
begin
v_field_id:='nation';
open cu3 for 'select code_segment_start,code_segment_length,code_zone_id from zc.t_gx_rule_detail where field_id='||v_field_id;
loop
fetch cu3 into v_code_segment_start,v_code_segment_length,v_code_zone_id;
exit when cu3%notfound;问题:
情况1:v_field_id:='nation';
open cu3 for 'select * from zc.t_gx_rule_detail where field_id='||v_field_id;抱错无效列名
情况2:v_field_id:='1';
open cu3 for 'select * from zc.t_gx_rule_detail where code_segment_start='||v_field_id;正确通过,可以运行请大虾指教
v_field_id varchar2(10);--列名(包括下面4个都是t_gx_rule_detail中的字段)该字段数据如:nation
v_code_segment_start varchar2(10);--校验码段起始位置(该字段数据数据如:1)
v_code_segment_length varchar2(10);--代码长度(该字段数据数据如:3)
v_code_zone_id varchar2(10);--标准代码集标识(该字段数据数据如:001)
type curs is ref cursor;
cu3 curs;
begin
v_field_id:='nation';
open cu3 for 'select code_segment_start,code_segment_length,code_zone_id from zc.t_gx_rule_detail where field_id='||v_field_id;
loop
fetch cu3 into v_code_segment_start,v_code_segment_length,v_code_zone_id;
exit when cu3%notfound;问题:
情况1:v_field_id:='nation';
open cu3 for 'select * from zc.t_gx_rule_detail where field_id='||v_field_id;抱错无效列名
情况2:v_field_id:='1';
open cu3 for 'select * from zc.t_gx_rule_detail where code_segment_start='||v_field_id;正确通过,可以运行请大虾指教
解决方案 »
- 使用JAVA调用存储过程,使用ParameterMetaData报错,请高手指点
- 在哪里修改日期格式?在INIT.ORA中?
- 求判断一张表中两个字段是否互相存在引用值的SQL
- 关于oracle游标的问题?急!
- 讨论:怎样能实现oracle数据的异地时时备份?
- 大家有没有从linux 32位 oracle 10g 导数据 到solaris 下64位 oracle10g 的经历?我导的数据有错误呢?而且从外连接查询到的数据也跟原数
- 如何提高关联查询速度?
- 请问用什么方法把数据库中的数据导出到文件里?
- 做了4年oracle form
- sql问题
- 求一个SQL语句
- 怎么判断一个字段的内容的长度或是否为空?
改为
open cu3 for 'select * from zc.t_gx_rule_detail where field_id=:v1' using v_field_id;
select * from zc.t_gx_rule_detail where code_segment_start='1' --没有记录,没游标死锁之说
解决方案:
在exit后加入close cu3;
field_id='||v_field_id是另外一个字段里面值类似nation说明一下,我用sql语句都查得到记录得请各位再给点意见
open cu3 for 'select * from zc.t_gx_rule_detail where field_id='''||v_field_id||'''';
你的后一句变量为数字,oracle会自动转换为字符型的,所以没有报错。
select * from zc.t_gx_rule_detail where field_id=nation;
少了单引号!应该为
select * from zc.t_gx_rule_detail where field_id='nation';
而第二个sql对于的查询语句是:
select * from zc.t_gx_rule_detail where code_segment_start=1;
oracle会自动把sql解析为:
select * from zc.t_gx_rule_detail where code_segment_start='1';
....