当然可以啊!用动态sql就可以了

解决方案 »

  1.   

    nicholaz(欲上青天揽明月):
    能不能给个例子
      

  2.   

    给你个简单的oracle的例子,pro*c差不多SQL> desc yyy;
    Name Type          Nullable Default Comments 
    ---- ------------- -------- ------- -------- 
    AAA  NUMBER        Y                         
    ERR  VARCHAR2(100) Y            
    insert into yyy values(5,'1111111111');
    create or replace procedure test
            is
            tab1 varchar2(10);
            col1 varchar2(10);
            s varchar2(100);
    begin
      tab1 := 'YYY';
      col1 := 'aaa';
      s := ' update '|| tab1 ||' set err='|| 123 ||' where '|| col1 ||' = 5 ';
      execute immediate s; 
      commit;
    end test;
      

  3.   

    Pro*c的例子
    char      sQueryString[1000];
    char      sTableName[20];
    char      a3[100];
    ........
    ........
    strcpy(sTableName,"YourTableName");
    strcpy(a3,"lzj");
    ........
    ........
           strcpy(sQueryString," Select a.a1,a.a2\n");
           strcat(sQueryString,"  From ");
           strcat(sQueryString,sTableName);
           strcat(sQueryString," a\n");
           strcat(sQueryString," Where a.a3=");
           strcat(sQueryString,a3);
           .......
           .......
           
        EXEC SQL Prepare s From :sQueryString;
        EXEC SQL Declare YourCursorName Cursor For s;
        EXEC SQL Open YourCursorName;
        for (;;)
          {
            EXEC SQL Fetch YourCursorName
                     Into :variable,
                       ...........
                       ...........
            if (sqlca.sqlcode!=0) break;                   
          }                   
         EXEC SQL Close YourCursorName;