PROCEDURE TEST(IN_PROGRAM IN VARCHAR2, PR_CURSOR OUT PACKAGE_REPORTS_CURSOR)
AS
qry_str VARCHAR2(2000);
BEGIN
qry_str := 'SELECT OT.SALES_ORDER_NUM, ST.TRACKING_NUM, SS.SHIPMENT_STATUS_DETAIL, ST.EXCEPTION_CODE,
ST.REFERENCE_NUM, ST.EXPECTED_SHIP_DATE, ST.ACTUAL_SHIP_DATE,
ST.EXPECTED_DELIV_DATE, ST.REQ_DELIV_DATE, ST.ACTUAL_DELIV_DATE
FROM SHIPMENT_TRACKING ST, ORDER_TABLE OT, SHIPMENT_STATUS_LOOKUP SS
WHERE OT.SALES_ORDER_NUM = ST.SALES_ORDER_NUM
AND SS.SHIPMENT_STATUS_CODE = ST.SHIP_TYPE';
IF LENGTH(IN_PROGRAM) > 0 THEN
qry_str := qry_str || ' AND OT.ADMINISTRATION = IN_PROGRAM';
END IF;
OPEN PR_CURSOR FOR qry_str;
END TEST;
i'm getting the following error though when i run this:
2005-03-01 10:37:06,922 [2148] ERROR SeNTReporter.SeNTReport - Failed to run query: TEST: ORA-00904: "IN_PROGRAM": invalid identifier
ORA-06512: at "SENTPROTO.PACKAGE_REPORTS_PKG", line 19
ORA-06512: at line 1
2005-03-01 12:18:28,447 [2148] ERROR SeNTReporter.SeNTReport - Failed to run query: TEST: ORA-00904: "ASDF": invalid identifier
ORA-06512: at "SENTPROTO.PACKAGE_REPORTS_PKG", line 23
ORA-06512: at line 1
which means, now it's failing on the string i'm actually entering on the gui. gettin closer =D
2005-03-01 12:18:28,447 [2148] ERROR SeNTReporter.SeNTReport - Failed to run query: TEST: ORA-00904: "ASDF": invalid identifier
ORA-06512: at "SENTPROTO.PACKAGE_REPORTS_PKG", line 23
ORA-06512: at line 1
which means, now it's failing on the string i'm actually entering on the gui. gettin closer =D
anything else you suggest?
Yes, somewhere there in an invalid reference to "ASDF" in your code.
Originally posted by JayM "ASDF" is what i input on the gui. this column is defined as a varchar2, so i don't see why it's having problems doing the following comparison:
Code:
AND OT.ADMINISTRATION = ' || IN_PROGRAM;
IT seems like the problem is not in test but somewhere else. The problem could be in the gui. If this is a part of a package that has an initialization section that references ASDF, that could also be the problem.
IF LENGTH(IN_PROGRAM) > 0 THEN
dbms_output.PUT_LINE(IN_PROGRAM);
qry_str := qry_str || ' AND OT.ADMINISTRATION = ' || ''''||UPPER(IN_PROGRAM)||'''';
END IF;
So ASDF is a value not a column name.
You can also simplify it slightly.
Code:
IF LENGTH(IN_PROGRAM) > 0 THEN
dbms_output.PUT_LINE(IN_PROGRAM);
qry_str := qry_str || ' AND OT.ADMINISTRATION = ''' ||
UPPER(IN_PROGRAM)||'''';
END IF;
Bookmarks