You are on page 1of 2

Exhibit 4 DBMS_SQL Example

8/13/15, 8:49 PM

Exhibit 4 DBMS_SQL Example


Category: PL/SQL Translation Tool
Published Date

Oracle DBMS_SQL dynamic sql translation:


CREATE or REPLACE PROCEDURE myDynSql01(p_empno IN emp.empno%TYPE,
p_name OUT emp.ename%TYPE,
p_job OUT emp.job%TYPE)
IS
v_crs_id pls_integer;
v_rows_processed INTEGER;
BEGIN
v_crs_id := dbms_sql.open_cursor;
DBMS_SQL.PARSE(v_crs_id, 'SELECT ename, job FROM emp WHERE empno = :zzz', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(v_crs_id, ':zzz', p_empno);
DBMS_SQL.DEFINE_COLUMN(v_crs_id, 1, p_name, 10);
DBMS_SQL.DEFINE_COLUMN(v_crs_id, 2, p_job, 10);
v_rows_processed := DBMS_SQL.EXECUTE(v_crs_id);
if DBMS_SQL.FETCH_ROWS(v_crs_id) > 0 then
DBMS_SQL.COLUMN_VALUE(v_crs_id, 1, p_name);
DBMS_SQL.COLUMN_VALUE(v_crs_id, 2, p_job);
else
RAISE no_data_found;
end if;
-DBMS_OUTPUT.PUT_LINE('.................| dynamic SQL result | ' || p_name);
-DBMS_SQL.CLOSE_CURSOR(v_crs_id);
EXCEPTION
WHEN others THEN
dbms_output.put_line('ERROR myDynSql01 sqlerrm: ' || sqlerrm);
END myDynSql01;

Postgres as translated by magicHat


-- magicHat translation v2.1 July 30, 2014
CREATE or REPLACE FUNCTION myDynSql01(
p_empno IN emp.empno%TYPE,
p_name OUT emp.ename%TYPE,
p_job OUT emp.job%TYPE)
RETURNS RECORD AS $body$
DECLARE
v_crs_id
integer;
v_rows_processed
integer;
BEGIN
EXECUTE 'SELECT ename, job FROM emp WHERE empno = $1' INTO p_name, p_job USING p_empno;
GET DIAGNOSTICS v_rows_processed := ROW_COUNT;
if v_rows_processed > 0 then
else
RAISE no_data_found;
end if;
-RAISE NOTICE '.................| dynamic SQL result | %', p_name;
-EXCEPTION
WHEN others THEN
RAISE NOTICE 'ERROR myDynSql01 sqlerrm: %', sqlerrm;
http://postgresmigrations.com/database-migration/stored-procedure-tool/exhibit-4-dbms-sql-example?tmpl=component&print=1&page=

Page 1 of 2

Exhibit 4 DBMS_SQL Example

8/13/15, 8:49 PM

END; -- myDynSql01
$body$ LANGUAGE plpgsql SECURITY DEFINER;

http://postgresmigrations.com/database-migration/stored-procedure-tool/exhibit-4-dbms-sql-example?tmpl=component&print=1&page=

Page 2 of 2

You might also like