Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: what's wrong with my package? (not a personal problem)

Re: what's wrong with my package? (not a personal problem)

From: <ThomasO_at_cpas.com>
Date: 31 Aug 2006 09:55:25 -0700
Message-ID: <1157043325.041242.324450@b28g2000cwb.googlegroups.com>

pdog wrote:
> ---------------------------------------------------------------------------------------------
> CREATE OR REPLACE PACKAGE BKDP_SEARCH_PKG AS
> TYPE BKDP_Cur_GetAccts IS REF CURSOR; --RETURN BKDP_Rec_GetAccts;
>
> PROCEDURE SP_BKDP_ACCOUNTSEARCH (param_account in
> RACCOUNT.ACCOUNT%TYPE,
> param_name in RACCTREL.NAME%TYPE,
> param_case in RACCBKRP.CASE_NUMBER%TYPE,
> param_ssn in RACCTREL.SS_NO%TYPE,
> BKDP_inout OUT BKDP_Cur_GetAccts);
> END BKDP_SEARCH_PKG;
> /
> ------------------------------------------------------------------------------------------
> ------------------------------------------------------------------------------------------
> CREATE OR REPLACE PACKAGE BODY BKDP_SEARCH_PKG AS
>
> PROCEDURE SP_BKDP_ACCOUNTSEARCH
> (param_account in RACCOUNT.ACCOUNT%TYPE,
> param_name in RACCTREL.NAME%TYPE,
> param_case in RACCBKRP.CASE_NUMBER%TYPE,
> param_ssn in RACCTREL.SS_NO%TYPE,
> BKDP_inout OUT BKDP_Cur_GetAccts)
> as
>
> SQLQuery varchar2(4000);
> BEGIN
>
> SQLQuery := 'Select RACCOUNT.account, RACCTREL1.NAME PRIMNAME,
> BKDP_MISSINGFIELDS.LEGAL_NAME, ' ||chr(10)
> ||'RACCTREL1.SS_NO PRIMSSN, RACCTREL1.STATE PRIMSTATE,
> RACCBKRP.CASE_NUMBER, ' ||chr(10)
> ||'RACCBKRP.COURT_ID, RACCTREL2.NAME CONAME, RACCTREL2.SS_NO COSSN,
> RACCTREL2.STATE COSTATE ' ||chr(10)
> ||'FROM RACCOUNT INNER JOIN RACCTREL RACCTREL1 ON (RACCOUNT.ACCOUNT
> = RACCTREL1.ACCOUNT AND RACCTREL1.REL_POS= ''1'') ' ||chr(10)
> ||'LEFT OUTER JOIN RACCTREL RACCTREL2 ON (RACCOUNT.ACCOUNT =
> RACCTREL2.ACCOUNT AND RACCTREL2.REL_POS= ''2'') '||chr(10)
> ||'LEFT OUTER JOIN BKDP_MISSINGFIELDS ON RACCOUNT.ACCOUNT =
> BKDP_MISSINGFIELDS.ACCOUNT '||chr(10)
> ||'LEFT OUTER JOIN RACCBKRP ON RACCOUNT.ACCOUNT = RACCBKRP.ACCOUNT
> '||chr(10)
> ||'WHERE ROWNUM < 500 ';
> if (param_account IS NOT NULL) then
> SQLQuery := SQLQuery || 'AND RACCOUNT.ACCOUNT = ''' || param_account
> || ''' ';
> end if;
> if (param_name IS NOT NULL) then
> SQLQuery := SQLQuery || 'and RACCTREL1.NAME_U LIKE ''' || param_name
> || '%'' ';
> end if;
> if (param_case IS NOT NULL) then
> SQLQuery := SQLQuery || 'AND RACCBKRP.CASE_NUMBER LIKE ''' ||
> param_case || '%'' ';
> end if;
> if (param_ssn is not null) then
> SQLQuery := SQLQuery || 'AND RACCTREL1.SS_NO LIKE ''' || param_ssn ||
> '%'' ';
> end if;
>
> SQLQuery := SQLQuery || 'ORDER BY RACCOUNT.ACCOUNT';
>
> open BKDP_inout for SQLQuery;
>
> END SP_BKDP_ACCOUNTSEARCH;
>
> END BKDP_SEARCH_PKG;
> /

Change
SQLQuery := SQLQuery || 'ORDER BY RACCOUNT.ACCOUNT'; to
SQLQuery := SQLQuery || ' ORDER BY RACCOUNT.ACCOUNT';

better yet:
Read about ref cursor at:
http://download-east.oracle.com/docs/cd/B19306_01/appdev.102/b14261/sqloperations.htm it may give you an idea to eliminate "dynamic sql" from your solution. Look at example : Example 6-30
HTH
Thomas Olszewicki
CPAS Systems Inc. Received on Thu Aug 31 2006 - 11:55:25 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US