各位.好。
我贴代码:
CREATE OR REPLACE Function FN_NS_XMCX(A1  IN VARCHAR2,   --单位                                      A2  IN VARCHAR2)
  RETURN types.cursorTypes IS
  resultSet types.cursorTypes;  str2     varchar2(5000);
  str3     varchar2(5000);
  
    BEGIN ---建立临时表
        str3   :=   'create   GLOBAL TEMPORARY   DB_NS_LS_XMBH
                     (
                        co_code  varchar2(100),
                        co_name  Varchar2(100),
                        co_user  varchar2(100),
                        co_jine  varchar2(100),
                        co_riqi  varchar2(100)
                      )
                      ON COMMIT DELETE ROWS;
                      ';
        execute   immediate   str3;
        str2   :=   'INSERT INTO DB_NS_LS_XMBH(co_code,co_name,co_user,co_jine,co_riqi)
                      SELECT co_code,co_name,nd,nd,nd from ma_company
                      where co_code = a1                                    ---a1传入参数
                      and is_user=a2;                --a2 传入参数                                    
                    ';
        execute   immediate   str3;
  --返回结果集
  OPEN resultSet FOR
  select co_code,co_name,co_user,co_jine,co_riqi from DB_NS_LS_XMBH;
  RETURN resultSet;
  CLOSE resultSet;
END FN_NS_XMCX;
请问a1,a2的传入参数在存储过程中的字符串中如何使用。

解决方案 »

  1.   

    重贴代码:
    CREATE OR REPLACE Function FN_NS_XMCX(A1  IN VARCHAR2,   --单位                                      A2  IN VARCHAR2)
      RETURN types.cursorTypes IS
      resultSet types.cursorTypes;/*  n_bnjs2   NUMBER(20,2);
      n_xnys    NUMBER(20,2);
      n_hz1     NUMBER(20,2);
      n_hz2     NUMBER(20,2);*/
      str2     varchar2(5000);
      str3     varchar2(5000);
      
      
      let  varchar2(5000);
      BEGIN ---建立临时表
           let:=A1;
            str3   :=   'create   GLOBAL TEMPORARY   DB_NS_LS_XMBH
                         (
                            co_code  varchar2(100),
                            co_name  Varchar2(100),
                            co_user  varchar2(100),
                            co_jine  varchar2(100),
                            co_riqi  varchar2(100)
                          )
                          ON COMMIT DELETE ROWS;
                          ';
            execute   immediate   str3;
            str2   :=   'INSERT INTO DB_NS_LS_XMBH(co_code,co_name,co_user,co_jine,co_riqi)
                          SELECT co_code,co_name,nd,nd,nd from ma_company
                          where co_code = a1
                          and is_user=a2;
                        ';
            execute   immediate   str2;
      --返回结果集
      OPEN resultSet FOR
      select co_code,co_name,co_user,co_jine,co_riqi from DB_NS_LS_XMBH;
      RETURN resultSet;
      CLOSE resultSet;
    END FN_NS_XMCX;
      

  2.   

    a1,a2作为参数,真正调用的时候会被赋值
    就把a1,a2当作常量使用就可以啊,跟其他程序中没有区别啊
      

  3.   


    1 动态语句里不能有分号
    2 用绑定变量str2 := 'INSERT INTO DB_NS_LS_XMBH(co_code,co_name,co_user,co_jine,co_riqi)
      SELECT co_code,co_name,nd,nd,nd from ma_company
      where co_code = :a1
      and is_user= :a2';  execute immediate str2 using a1,a2;
      

  4.   

      str2 := 'INSERT INTO DB_NS_LS_XMBH(co_code,co_name,co_user,co_jine,co_riqi)
      SELECT co_code,co_name,nd,nd,nd from ma_company
      where co_code = '||a1||'and is_user= '||a2;  execute immediate str2 using a1,a2;