ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle开发 » 在过程中执行动态语句的问题

标题: 在过程中执行动态语句的问题
离线 yzf01
中级会员


精华贴数 0
个人空间 0
技术积分 1175 (1504)
社区积分 614 (1244)
注册日期 2001-11-19
论坛徽章:10
2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:曲棍球生肖徽章2007版:猪2008年新春纪念徽章生肖徽章2007版:鸡 
      

发表于 2002-1-10 11:48 
在过程中执行动态语句的问题

我在Oracle的过程中写了下面两句SQL;
===============================================
---Obj_TabName 接收外面传进来的表名
---Obj_ID  : ObjID 字段的值,也是外面传进来的
---我想从表中得到pobjID,pbojtabName的值,并赋值给参数:
---pObj_ID,pobj_TabName

v_strp:='select pobjid,pobjtabname Into pObj_ID, pObj_TabName from '||obj_TabName||' where objid='||obj_ID||' And rownum=1;';
Execute immediate v_sql_strp;
===============================================

请问我上面的两行语句能满足我的要求吗?
我运行这个过程的时候,总是出这个错误:
==========================================
ERROR:
ORA-24338: 未执行语句句柄
==========================================
请大家帮忙!



__________________
我每天都觉得很累。。。。。。
只看该作者    顶部
离线 zhuzhichao
炎龙骑士


精华贴数 2
个人空间 0
技术积分 1684 (996)
社区积分 195 (2406)
注册日期 2001-10-15
论坛徽章:3
ITPUB元老会员2006贡献徽章授权会员   
      

发表于 2002-1-10 11:55 
v_sql_strp:='select pobjid,pobjtabname from '||obj_TabName||' where objid='||obj_ID||' And rownum=1';
Execute immediate v_sql_strp into pObj_ID,pObj_TabName;


__________________
zhuzhichao@itpub.net
只看该作者    顶部
离线 yzf01
中级会员


精华贴数 0
个人空间 0
技术积分 1175 (1504)
社区积分 614 (1244)
注册日期 2001-11-19
论坛徽章:10
2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:曲棍球生肖徽章2007版:猪2008年新春纪念徽章生肖徽章2007版:鸡 
      

发表于 2002-1-10 12:03 
运行这个过程的时候还是出这个错,我把原程序贴出来:
===============================================
Procedure SP_findObjID(resultset out Rome.RefCursor,Obj_ID in char,Obj_TabName in varchar2
                          ,pObj_ID out varchar2,pObj_TabName out varchar2)
   IS
        v_sql_strp varchar2(1000);
        Begin
               
                v_sql_strp:='select pobjid,pobjtabname  from '||obj_TabName||' where objid='||obj_ID||' And rownum=1;';
                Execute immediate v_sql_strp Into pObj_ID, pObj_TabName ;

    if (pObj_ID  is null ) or (pObj_TabName is null) or (Pobj_TabName='') then
                   pObj_ID :=null;
                   pObj_TabName:=null;
                Else
                   Open resultset for select pObj_ID as PObjID,pobj_TabName as  pobjtabname From dual;
                End If;
               
                Exception
/*                  when NO_DATA_FOUND then
                     RAISE_APPLICATION_ERROR(-20000,'Table: '||Obj_Name||' no obj_ID equal:'||Obj_ID);*/
                  when Others then
                  DBMS_OUTPUT.PUT_LINE('Error Number: '||sqlcode||' Error Description: '||sqlerrm);

        End;
==========================================================================

在SQL/PLUS中的运行语句:
=================================================================
Set autoprint on
        var x RefCursor
        var pObj_ID varchar2
        var pObj_TabName varchar2
        Exec Ora_Rome.SP_findObjID(:x,'0000000000000000000000000000C001','TCAPPGROUP', Obj_ID, Obj_TabName )
============================================================================

我这个过程哪里写错了?


__________________
我每天都觉得很累。。。。。。
只看该作者    顶部
离线 流云飞天
孤影萍踪



精华贴数 0
个人空间 0
技术积分 186 (9970)
社区积分 0 (50357)
注册日期 2002-1-10
论坛徽章:0
      
      

发表于 2002-1-10 12:15 
我的动态SQL语句是这样写的……

/*你的程序我没仔细研究,因为我上网时间有限。下面是我的程序,希望对你有所帮助*/
DECLARE
STATEMENT  VARCHAR2(3000);
MY_HANDLE  INTEGER;
CNT                NUMBER(3):=0;
BEGIN
STATEMENT:= (你拼出的SQL语句,当然要保证没有语法错误) ;
MY_HANDLE:= DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(MY_HANDLE,STATEMENT,DBMS_SQL.V7);
CNT:=DBMS_SQL.EXECUTE(MY_HANDLE);/*执行成功后CNT的值是所处理的记录条数*/
DBMS_SQL.CLOSE_CURSOR(MY_HANDLE);
END;


__________________
忧郁的眼睛真诚的心,相识相知愿与君。redsun_shine@sina.com路漫漫,吾上下而求索之修者,远兮!小的时候,不知道理想是什么;长大以后,又不知什么是理想……
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问