第一:
你医院id查询可能没有数据返回所以报错。
第二:
 sqlstr := 'select A'||i||' into '||sz_readdb(i)||' from o_inapp_v where 医院ID=''医院ID''';
 execute immediate sqlstr;
这个sql 也是错误的写法。动态sql参数输出不是这么写的,而是:
 sqlstr := 'select A'||i||'  from o_inapp_v where 医院ID=''医院ID''';
 execute immediate sqlstr into sz_readdb(i);ps:sz_readdb(i)为啥不直接用个varchar2代替?

解决方案 »

  1.   


    谢谢回复,一直报错的问题解决了。。
    我是在解决一个excel导入的数据问题,第一行里面有医院id,名称,和横着一行写的日期,然后日期下面第二行写的工作内容。所以我考虑用数组把日期读出来,然后再把工作内容读出来,再整理到另一个表里出报表用。。上面的问题解决了,又有个新问题。。 表第一行的医院ID字段里的值是(医院ID)这几个字,但是
    sqlstr := 'select A'||i||'  from o_inapp_v where 医院ID=''医院ID''';
    这句后面的单引号没起作用,这个单引号里面写单引号,我试了好多种方法都没成功。。=======数据结构
        大区 地区 代表 医院ID 医院名称 目标科室 医生ID 医生 医生级别 A10 A11 A12 A13 A14 A15
    1 大区 地区 代表 医院ID 医院名称 目标科室 目标医生代码 目标医生姓名 目标医生级别  9月1日 9月2日 9月3日 9月4日 9月5日 9月6日
    2 东一 浙江 A 20540 浙江大学医学院附属邵逸夫医院 心胸外科 doc1 B 1
    3 东一 浙江 B 20540 浙江大学医学院附属邵逸夫医院 麻醉科 doc2 B 1
    4 东一 浙江 C 20540 浙江大学医学院附属邵逸夫医院 麻醉科 doc3 B 1 1
    5 东一 浙江 A 20540 浙江大学医学院附属邵逸夫医院 麻醉科 doc4 B 1 1 1