Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Dynamic PL/SQL
--0-610515434-977434750=:5535
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hello all,
I have a dynamic PL/SQL procedure that selects author_name. For some reason author names that contain
"'" cause the procedure to fail.
Does anyone have experienced this before and has a
solution?
Attached is a section from the procedure.
Thanks.
Content-Type: text/plain; name="Proc.txt" Content-Description: Proc.txt Content-Disposition: inline; filename="Proc.txt"
LOOP
/* BUILD THE SELECT STATEMENT */
ls_select_statement := 'SELECT J.JOURNAL_ID, M.SPLIT_CODE, P.PUBKEY_JCODE||P.PUBKEY_YRISSUE||P.PUBKEY_MS_SEQNO||P.PUBKEY_CKCHAR, J.JOURNAL_NAME, P.CAS_RECV_DATE , P.PUBLISH_DATE , M.NO_SUPP_PAGES, P.SUPP_MAT_OTHER, REPLACE(MS.AUTHOR_LASTNAME,'''','' '') FROM '||R_SCHEMA.J_ID||'.JOURNAL J,'||R_SCHEMA.J_ID||'.PUBSTAT P, '||R_SCHEMA.J_ID||'.MSCRIPT M,'||R_SCHEMA.J_ID||'.MSAUTHOR MS WHERE P.PUBKEY_JCODE=J.JOURNAL_ID AND P.PUBKEY_JCODE = M.JOURNAL_ID AND P.PUBKEY_YRISSUE = M.YR_OF_ISSUE AND P.PUBKEY_MS_SEQNO = M.MS_SEQUENCE_NO AND P.PUBKEY_CKCHAR = M.CHECK_CHAR AND MS.AUTHMSNO_JCODE(+) = P.PUBKEY_JCODE AND MS.AUTHMSNO_YRISSUE(+) = P.PUBKEY_YRISSUE AND MS.AUTHMSNO_MS_SEQNO(+)= P.PUBKEY_MS_SEQNO AND MS.AUTHMSNO_CKCHAR(+)= P.PUBKEY_CKCHAR AND MS.DISPLAY_SEQUENCE = 1 AND P.PUBKEY_JCODE||P.PUBKEY_YRISSUE||P.PUBKEY_MS_SEQNO||P.PUBKEY_CKCHAR = ''JA005514C'' AND (M.NO_SUPP_PAGES > 0 OR P.SUPP_MAT_OTHER > 0) AND P.cas_recv_date between '||''''||sdate ||''''||' and '||''''|| edate ||'''' ; li_cursor_id := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.parse(li_cursor_id, ls_select_statement,1); DBMS_SQL.DEFINE_COLUMN(li_cursor_id, 1, v_journal_id, 2); DBMS_SQL.DEFINE_COLUMN(li_cursor_id, 2, v_split_code, 2); DBMS_SQL.DEFINE_COLUMN(li_cursor_id, 3, v_msno,9); DBMS_SQL.DEFINE_COLUMN(li_cursor_id, 4, v_journal_name,50); DBMS_SQL.DEFINE_COLUMN(li_cursor_id, 5, v_recv_date); DBMS_SQL.DEFINE_COLUMN(li_cursor_id, 6, v_pub_date); DBMS_SQL.DEFINE_COLUMN(li_cursor_id, 7, v_no_supp_pages); DBMS_SQL.DEFINE_COLUMN(li_cursor_id, 8, v_supp_mat_other); DBMS_SQL.DEFINE_COLUMN(li_cursor_id, 9, v_author_lastname,30); li_rc := DBMS_SQL.EXECUTE(li_cursor_id); LOOP EXIT WHEN DBMS_SQL.FETCH_ROWS(li_cursor_id) = 0; DBMS_SQL.COLUMN_VALUE(li_cursor_id, 1, v_journal_id); DBMS_SQL.COLUMN_VALUE(li_cursor_id, 2, v_split_code); DBMS_SQL.COLUMN_VALUE(li_cursor_id, 3, v_msno); DBMS_SQL.COLUMN_VALUE(li_cursor_id, 4, v_journal_name); DBMS_SQL.COLUMN_VALUE(li_cursor_id, 5, v_recv_date); DBMS_SQL.COLUMN_VALUE(li_cursor_id, 6, v_pub_date); DBMS_SQL.COLUMN_VALUE(li_cursor_id, 7, v_no_supp_pages); DBMS_SQL.COLUMN_VALUE(li_cursor_id, 8, v_supp_mat_other); DBMS_SQL.COLUMN_VALUE(li_cursor_id, 9, v_author_lastname); ls_insert_statement := 'INSERT INTO '||use_name||'.manuscript_pages_received VALUES('; ls_insert_statement := ls_insert_statement ||''''||v_journal_id||'''' ||','||''''||v_split_code||''''Received on Thu Dec 21 2000 - 15:39:10 CST
||','||''''||v_msno||''''
||','||''''||v_journal_name||''''
||','||''''||v_recv_date||''''
||','||''''||v_pub_date||''''
||','||v_no_supp_pages|| ','||v_supp_mat_other|| ','||''''||v_author_lastname||''''||')'; li_cursor_id1 := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(li_cursor_id1, ls_insert_statement, 1); li_rc := DBMS_SQL.EXECUTE(li_cursor_id1); dbms_output.put_line (v_msno||' '||v_author_lastname); DBMS_SQL.CLOSE_CURSOR(li_cursor_id1); END LOOP; DBMS_SQL.CLOSE_CURSOR(li_cursor_id);
![]() |
![]() |