![]() | |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Good day. Please response your opinion. Assume a function should return result set based on given parameters, but not all parameters can be given (NULL valued). Which method is better and why? CREATE OR REPLACE FUNCTION dynamic_sql( pparameter table_name.col_name%TYPE ) RETURN SYS_REFCURSOR IS * * RESULT *SYS_REFCURSOR; * * vSql * *VARCHAR2( 100 ); * * vCursor NUMBER; * * vNumber NUMBER; BEGIN * * vSql := 'SELECT * FROM table_name'; * * IF pparameter IS NOT NULL THEN * * * * vSql := vSql || ' WHERE col_name LIKE parameter';* * END IF; * * vCursor := DBMS_SQL.OPEN_CURSOR; * * DBMS_SQL.PARSE( vCursor, vSql, DBMS_SQL.NATIVE ); * * IF pparameter IS NOT NULL THEN * * * * DBMS_SQL.BIND_VARIABLE( vCursor, 'pparameter', pparameter); * * END IF; * * vNumber := DBMS_SQL.EXECUTE( vCursor ); * * RESULT := DBMS_SQL.TO_REFCURSOR( vCursor ); * * RETURN ( RESULT ); END dynamic_sql; CREATE OR REPLACE FUNCTION static_sql( pparameter table_name.col_name%TYPE ) RETURN SYS_REFCURSOR IS * * RESULT SYS_REFCURSOR; BEGIN * * OPEN RESULT FOR SELECT * FROM table_name WHERE pparameter IS NULLOR col_name LIKE pparameter; * * RETURN ( RESULT ); END static_sql; |
#3
| |||
| |||
|
|
Good day. Please response your opinion. Assume a function should return result set based on given parameters, but not all parameters can be given (NULL valued). Which method is better and why? CREATE OR REPLACE FUNCTION dynamic_sql( pparameter table_name.col_name%TYPE ) RETURN SYS_REFCURSOR IS * * RESULT *SYS_REFCURSOR; * * vSql * *VARCHAR2( 100 ); * * vCursor NUMBER; * * vNumber NUMBER; BEGIN * * vSql := 'SELECT * FROM table_name'; * * IF pparameter IS NOT NULL THEN * * * * vSql := vSql || ' WHERE col_name LIKE parameter';* * END IF; * * vCursor := DBMS_SQL.OPEN_CURSOR; * * DBMS_SQL.PARSE( vCursor, vSql, DBMS_SQL.NATIVE ); * * IF pparameter IS NOT NULL THEN * * * * DBMS_SQL.BIND_VARIABLE( vCursor, 'pparameter', pparameter); * * END IF; * * vNumber := DBMS_SQL.EXECUTE( vCursor ); * * RESULT := DBMS_SQL.TO_REFCURSOR( vCursor ); * * RETURN ( RESULT ); END dynamic_sql; CREATE OR REPLACE FUNCTION static_sql( pparameter table_name.col_name%TYPE ) RETURN SYS_REFCURSOR IS * * RESULT SYS_REFCURSOR; BEGIN * * OPEN RESULT FOR SELECT * FROM table_name WHERE pparameter IS NULLOR col_name LIKE pparameter; * * RETURN ( RESULT ); END static_sql; |
#4
| |||
| |||
|
![]() |
| Thread Tools | |
| Display Modes | |
| |