create or replace package pg_people
is
procedure ParameterizedSQL (pFirstName NVARCHAR2, pLastName NVARCHAR2
, oPeople out sys_refcursor) ;
end;
Package created.
create or replace package body pg_people
as
procedure ParameterizedSQL (pFirstName NVARCHAR2, pLastName NVARCHAR2
, oPeople out sys_refcursor)
is
optionalCriteria NVARCHAR2(2000) := N'';
sqlStmt NVARCHAR2(32767) := N'';
BEGIN
IF(pFirstName IS NOT NULL) THEN
optionalCriteria := N' and First_Name = :firstName';
END IF;
sqlStmt := N'SELECT employee_id, last_name FROM HR.EMPLOYEES WHERE Last_Name = :lastName' || optionalCriteria;
OPEN oPeople FOR sqlStmt USING pLastName, pFirstName;
end;
end;
Package Body created.
declare
pFirstName NVARCHAR2(200) := 'Steven';
pLastName NVARCHAR2(200) := 'King';
oPeople sys_refcursor;
type p1 is record (a1 number, a2 varchar2(50));
begin
pg_people.ParameterizedSQL (pFirstName, pLastName, oPeople) ;
end;
Statement processed.
declare
pFirstName NVARCHAR2(200) := null;
pLastName NVARCHAR2(200) := 'King';
oPeople sys_refcursor;
type p1 is record (a1 number, a2 varchar2(50));
begin
pg_people.ParameterizedSQL (pFirstName, pLastName, oPeople) ;
end;
ORA-01006: bind variable does not exist ORA-06512: at "SQL_RVYJOTNMHSPOGWHFWPTHYGHZS.PG_PEOPLE", line 16 ORA-06512: at line 11 ORA-06512: at "SYS.DBMS_SQL", line 1721More Details: https://docs.oracle.com/error-help/db/ora-01006