Maybe one of you can open my eyes to what is going on.
I have a procedure I wrote that won't compile unless it is dynamic SQL. The statement works. I know it does since I tested it with hard-coded values in SQL*Plus worksheet before I wrote the proc. But for some reason Oracle won't compile the statement.
The error message reported by Oracle:Code:PROCEDURE sgovmrgn3(p_stab_yy IN scc_gov_mrgn_nsr.stab_yy%TYPE, p_prov_code IN scc_gov_mrgn_nsr.prov_code%TYPE, p_prov_mncpty_code IN scc_gov_mrgn_nsr.prov_mncpty_code%TYPE, p_gov_mrgn_type_code IN scc_gov_mrgn_nsr.gov_mrgn_type_code%TYPE, p_gov_mrgn_code IN scc_gov_mrgn_nsr.gov_mrgn_code%TYPE, p_non_cal_op IN NUMBER, p_gov_mrgn_amt IN OUT scc_cur) IS v_mncpty scc_gov_mrgn_nsr.prov_mncpty_code%TYPE; v_non_cal NUMBER; BEGIN IF NOT use_mncpty_in_select(p_stab_yy,p_prov_code,p_prov_mncpty_code,p_gov_mrgn_type_code,p_gov_mrgn_code) THEN v_mncpty:=0; ELSE v_mncpty:=p_prov_mncpty_code; END IF; IF p_non_cal_op <> 0 THEN v_non_cal:=0; ELSE v_non_cal:=1; END IF; -- this block works -- remove double dashes below to comment out block --/* OPEN p_gov_mrgn_amt FOR ' SELECT inner.gov_inv_mrgn_amt ' ||' FROM (SELECT gov_inv_mrgn_amt,' ||' ROW_NUMBER() OVER (ORDER BY stab_yy ASC) AS rn' ||' FROM scc_gov_mrgn_nsr' ||' WHERE stab_yy = p_stab_yy' ||' AND prov_code = p_prov_code' ||' AND prov_mncpty_code = p_prov_mncpty_code' ||' AND gov_mrgn_type_code = p_gov_mrgn_type_code' ||' AND gov_mrgn_code = p_gov_mrgn_code) inner' ||' WHERE inner.rn ' ||'BETWEEN 1+v_nc ' ||' AND 5+v_nc ' USING v_non_cal, v_non_cal; --*/ -- this block won't compile... WHY? -- this block will work in SQL*Plus worksheet -- add double dashes below to enable block /* SELECT inner.gov_inv_mrgn_amt FROM (SELECT gov_inv_mrgn_amt, ROW_NUMBER() OVER (ORDER BY stab_yy ASC) AS rn FROM scc_gov_mrgn_nsr WHERE stab_yy = p_stab_yy AND prov_code = p_prov_code AND prov_mncpty_code = p_prov_mncpty_code AND gov_mrgn_type_code = p_gov_mrgn_type_code AND gov_mrgn_code = p_gov_mrgn_code) inner WHERE inner.rn BETWEEN 1+v_non_cal AND 5+v_non_cal; --*/ END sgovmrgn3;
Selecting the offending line from USER_SOURCE:Code:LINE/COL ERROR -------- ----------------------------------------------------------------- 205/41 PLS-00103: Encountered the symbol "(" when expecting one of the following: , from
Result:Code:column text format a50 select text from user_source where name = upper('scc_strct_chnge') and type = upper('package body') and line = 205;
Anyone have any ideas why?Code:TEXT -------------------------------------------------- ROW_NUMBER() OVER (ORDER BY stab_yy ASC) AS rn
Cheers,
Keith.





Bookmarks