部分代码v_cut number;
v_sql varchar2(2000);
v_sql :='select count(*) into v_cut from '||v_tname||' where '||v_cname||'='''||valIn||'''';
dbms_output.put_line(v_sql);
execute immediate v_sql; --这里报错缺失关键字(SQL语句必须是动态生成的)

解决方案 »

  1.   


    dbms_output.put_line(v_sql);
    输出的SQL拿出来能运行不?
      

  2.   


    v_cut number;
    v_sql varchar2(2000);
    v_sql :='select count(*) from '||v_tname||' where '||v_cname||'='''||valIn||'''';
    dbms_output.put_line(v_sql);
    execute immediate v_sql into v_cut; --into不要放在select里面
      

  3.   

    INTO不放里面就失去意义了,我也知道是INTO的原因
    我要通过结果来判断后面的操作
      

  4.   

    还是报错:数据类型不一致: 应为 -, 但却获得 BLOB
      

  5.   

    单步调试下 在哪一句出错还有你把v_cnt number换成int型试一下
      

  6.   


    v_cut int;
    v_sql varchar2(2000);
    v_sql :='select count(*) from '||v_tname||' where '||v_cname||'='''||valIn||'''';
    dbms_output.put_line(v_sql);
    execute immediate v_sql into v_cut; --还是这句报错 数据类型不一致: 应为 -, 但却获得 BLOB
    ,兄弟,麻烦再看看
      

  7.   

    估计是你的sql有问题,就是拼接后的v_sql你单步调试到dbms_output.put_line(v_sql); 把v_sql的语句复制出来执行下看看有没有问题
      

  8.   

    OK,感谢楼上兄弟,是SQL语句问题。