Q&A

  • [re] PL/SQL BLOCK을 받아서 수행하는 프로그램을 짜고 싶은데...

>Trichedit에 PL/SQL 블럭을 받아서 해당 블럭을 수행하는 프로그램을 만들고 싶은데...
>TQuery을 쓰니 에러가 납니다.
>
>단순한 기능들 밖에 안 써봐서 어떻게 풀어야 할지 감이 안 잡히네요.
>
>한가지 더  dbms_output.put_line으로 수행된 내역을 화면으로 받아 볼수는 없을런지...
>
>고수님들의 조언 부탁드립니다.
>

좋은 답변 감사합니다. 그런데 에러가 나서 제가 사용한 SAMPLE을 적는 것이 답변을 주시는 데 도움이 될듯하여 적어봅니다.

예를 들어 아래와 같은 PL*SQL BLOCK을 수행하려고 하거든요.

DECLARE
    data_chunk          VARCHAR2(254);  
    chunk_size          NUMBER:=254;
    chunk_size_returned NUMBER;
    mycursor            NUMBER;
    stmt                VARCHAR2(1024);
    cur_pos             NUMBER:=0;
    rows                NUMBER;
    dummy               NUMBER;
    status              VARCHAR2(50);
  BEGIN    
    dbms_output.enable;
    
     stmt := 'select TEXT from mmart.mmquery where  NAME=''Subject Areas''';

     mycursor:=dbms_sql.open_cursor;
     dbms_sql.parse(mycursor, stmt, dbms_sql.v7);

     dbms_sql.define_column_long(mycursor,1);
     dummy:=dbms_sql.execute(mycursor);
     rows:=dbms_sql.fetch_rows(mycursor);
      -- only doing one fetch for the primary key as assuming the
      -- whole document is stored in one row loop
     loop
      -- fetch 'chunks' of the long until we have got the lot
       dbms_sql.column_value_long(mycursor,
                                  1,
                                  chunk_size,
                                  cur_pos,
                                  data_chunk,
                                  chunk_size_returned);
       dbms_output.put_line(data_chunk);
       cur_pos:=cur_pos + chunk_size;
       exit when chunk_size_returned = 0;
     end loop;
     dbms_sql.close_cursor(mycursor);
  END;
1  COMMENTS
  • Profile
    소울해커 2008.11.18 18:30
    DB에 프로시져로 만들어 넣으시고 AdoStoredProc 와 같은 컴포넌트로 불러다가 사용하시면 될겁니다.