proc中可以使用动态sql吧
动态组合sql语句就行了

解决方案 »

  1.   

    动态sql
    存储过程里面不可以用create table语句吗?我怎样才能动态建表?例一create or replace function test return varchar2 asv_cursor number;v_string varchar2(200);v_row number;beginv_cursor:=dbms_sql.open_cursor;--v_string:='update fnd_user a set a.description=''fred'' where a.user_id=1055';v_string:='create table testdb (text varchar2(200))';dbms_sql.parse(v_cursor,v_string,dbms_sql.native);v_row:=dbms_sql.execute(v_cursor);dbms_sql.close_cursor(v_cursor);return ('成功执行');exceptionwhen others thendbms_sql.close_cursor(v_cursor);return ('执行失败!'||sqlcode||sqlerrm);raise;end;例二CREATE OR REPLACE PROCEDURE Test1 ISv_SqlVARCHAR2(200); Cursor_create VARCHAR2(100);ResultNUMBER;BEGINv_Sql := 'CREATE TABLE T1(A VARCHAR2(200))';cursor_create := dbms_sql.open_cursor;DBMS_SQL.PARSE(cursor_create, v_SQL,dbms_sql.native);Result := dbms_sql.EXECUTE(cursor_create);DBMS_SQL.close_cursor(cursor_create);END Test1;
      

  2.   

    to bzszp(www.bzszp.533.net):
    您能说得详细点吗?我现在就是不知道怎么用这个动态sql。
    eg:
    从table1中获得的字段为:field1,field2(都是字符数串)
                    表明:table1          (字符串)
                    条件:conditiong = "姓名 = 'bill'";(也是字符串)       
    那么后面的:
                 select field1,field2 from table1 where condition
          怎么写?并且我要取出数据。
      

  3.   

    我只知道如何在存储过程里面使用动态sql
    proc的就不知道了存储过程里面使用动态sql,上面的兄弟已经介绍如何使用了
      

  4.   

    仍然谢谢bzszp(www.bzszp.533.net)!等大家帮忙吧。
    我顺便学学,能不能用存储过程来解决这个问题。
      

  5.   

    1、先声明一个长度较长的(一般500就够用了)varchar2型的宿主变量(sqlmt)、表名宿主变量(table1)、字段名宿主变量(field1,field2)、条件字符串宿主变量(condition);
    2、执行简单的sql语句取得表名、字段名、条件字符串放进事先声明的相应的宿主变量里;
    3、用sprintf()函数生成最终要执行的sql语句字符串。sprintf(sqlmt,"select %s,%s from %s where 姓名 = '%s';",table1.arr,field1.arr,field2.arr,condition.arr);
    4、EXEC SQL PREPARE S FROM :sqlmt;
    5、EXEC SQL EXECUTE S;
      

  6.   

    在pro*c程序中,各宿主变量声明之后、使用之前别忘了初始化。(一般用memset() )
      

  7.   

    更正:动态生成sql语句时,后面的分号是多余的。
      

  8.   

    to biliky():
    你的思路很好.我的这个任务很急,我现在的做法跟你基本相同,但是在实现中还是存在问题.想请你帮忙,我的qq号是:25165957。如果帮我解决了这个问题,我将不胜感激。可以再加50分!
    我现在就怀疑动态sql是否支持
    select %s,%s from %s where 姓名 = '%s' 
    中的select 和from之间的两个变量。
    因为我在选择的过程中,没有找到想要的结果集。