declare
v_sql varchar2(1000);
v_var varchar2(64);
v_order varchar2(64);
BEGIN
  v_order := '14273223621031I';
  v_sql := 'select SP_BILLNO from tenpayforwap right join dual on TRANSACTION_ID=' || v_order;
  execute immediate v_sql into v_var;
  if v_var is null then
    v_var := '0';
    end if;
  dbms_output.put_line(v_var);
  END; 当TRANSACTION_ID含有字母“I”时,会报异常:sql没有正确结束,不知道怎么办OracleSQL异常存储select

解决方案 »

  1.   

    v_sql := 'select SP_BILLNO from tenpayforwap right join dual on TRANSACTION_ID=''' || v_orde||'''';
      

  2.   

    试出来了,用动态注入:v_order := '314273223621031I';
     execute immediate v_sql into v_var using v_order;
      

  3.   

    同意2楼的。用动态绑定试试v_order := '14273223621031I';
      v_sql := 'select SP_BILLNO from tenpayforwap right join dual on TRANSACTION_ID=:v_order';
      execute immediate v_sql into v_var using v_order;