CREATE OR REPLACE PROCEDURE YST.DB_SHCL_PRE
IS
d1 date;d2 date;
s1 varchar2(20);s2 varchar2(20);s3 varchar2(20);
v1 number;v2 number;v3 number;v4 number;v5 number;
BEGIN
        s2 := '22879';
        select zz-pz-kz,credate into v3,d2 from yst_jzdetail@jxorcl where ljx = s2; 
        //...
END;
/
以上是PRE中的一段,jxorcl是dblink连接到另个oracle数据库,版本817都一样的。
就是在查询的时候为什么查不到数据?  按以下方法却查的到。
SQL> select zz-pz-kz,credate from yst_jzdetail@jxorcl where ljx = '22879';  ZZ-PZ-KZ CREDATE
---------- -----------
     33750 2009-10-17SQL> 

解决方案 »

  1.   

    .....
    select zz-pz-kz into v3,credate into d2 from yst_jzdetail@jxorcl where ljx = s2; 
    .....
    这样呢?
      

  2.   

    CREATE OR REPLACE PROCEDURE YST.DB_SHCL_PRE
    authid current_user试试这样写
      

  3.   

    两边的用户名和密码也都是一样的,都有三个权限
    connect,dba,resource
    direct倒没有
      

  4.   

    而且我在PRE中
    select zz-pz-kz,credate into v3,d2 from yst_jzdetail@jxorcl where ljx = s2;
    直接换成
    select zz-pz-kz,credate into v3,d2 from yst_jzdetail@jxorcl where ljx = '22879';
    也通得过。
      

  5.   

    奇怪了那换成
    s2 := '22879'; 
    execute immediate 'select zz-pz-kz,credate from yst_jzdetail@jxorcl where ljx = '||s2 into v3,d2 ; 会通过么?
      

  6.   

    我也感到很怪,转换成数字格式却可以了 v2 := '22879'; 
     select zz-pz-kz,credate into v3,d2 from yst_jzdetail@jxorcl where to_number(ljx) = v2;
    虽然功能实现了,但还是很糊涂。