DBMS_SQLの新機能です。カーソルから1行目を取得しようとしていますが、何も表示されません。私が間違ったことは?ここでは、コードです:PL/SQLでは、DBMS_SQLはデータを表示できません。
CREATE OR REPLACE PROCEDURE TEST_SQL
IS
id_var NUMBER;
name_var VARCHAR2(30);
sal_var Number;
source_cursor INTEGER;
countp INTEGER;
BEGIN
source_cursor := dbms_sql.open_cursor;
DBMS_SQL.PARSE(source_cursor,
'SELECT employee_id, first_name, salary FROM employees where department_id = 50',
DBMS_SQL.NATIVE);
DBMS_SQL.DEFINE_COLUMN(source_cursor, 1, id_var);
DBMS_SQL.DEFINE_COLUMN(source_cursor, 2, name_var, 30);
DBMS_SQL.DEFINE_COLUMN(source_cursor, 3, sal_var);
countp := DBMS_SQL.EXECUTE(source_cursor);
DBMS_SQL.COLUMN_VALUE(source_cursor, 1, id_var);
DBMS_SQL.COLUMN_VALUE(source_cursor, 2, name_var);
DBMS_SQL.COLUMN_VALUE(source_cursor, 3, sal_var);
dbms_output.put_line('id_var: '||id_var ||', name_var: '||name_var ||', sal_var: '|| sal_var);
END;
/
、出力は次のとおりです。
PROCEDURE TEST_SQL compiled
anonymous block completed
id_var: , name_var: , sal_var:
EDIT:学校の間違い - FETCH_ROWSについて-.- すべての作品を忘れてしまいました!
答えが更新されました。出力は上記のとおりです。 Oracle Database 11g Express Editionリリース11.2.0.2.0 - 64ビット –
奇妙な疑問があります。テーブルにdepartment_id = 50のレコードがありますか。また、単純なカーソルを使用して簡単に行うことができるときに表示するために、Oracle定義の関数を使用しています。 – XING
トレーニング用です。はい、レコードが存在します。そのHRスキーマ。 –