CREATE OR REPLACE PACKAGE BODY simpleState IS
PROCEDURE selectFromTable(tableName VARCHAR2, columnName VARCHAR2) IS
TYPE c1 IS TABLE OF VARCHAR2(30);
Notes c1;
BEGIN
EXECUTE IMMEDIATE 'Select ' || columnName || ' FROM ' || tableName BULK COLLECT INTO Notes;
FOR idx IN Notes.FIRST .. Notes.LAST LOOP
DBMS_OUTPUT.PUT_LINE(Notes(idx));
END LOOP;
END selectFromTable;
$conn = oci_connect("student", "STUDENT", "localhost");
if (!$conn) {
$m = oci_error();
echo $m['message'], "\n";
exit;
}
else {
print "Connected to Oracle!";
}
if(isset($_POST["readSubmit"])){
$table = $_POST['ReadTableName'];
$column = $_POST['ReadColumn'];
$stid = oci_parse($conn, 'begin simpleState.selectFromTable(:a,:b); end;');
ocibindbyname($stid, 'a', $table);
ocibindbyname($stid, 'b', $column);
if (!$stid) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$r = oci_execute($stid);
echo "$r";
oci_free_statement($stid);
oci_close($conn);
}
?>
PHPを使用してブラウザのDBMS_OUPUT.PUT_LINEにメッセージを表示しようとしています。しかし、何も表示されません。 PL/SQLコードは動作し、SQL Developerに表示する必要がある内容を表示します。誰もこれで私を助けることができますか?PHPでオラクルからdbms出力メッセージを取得します
なぜこれをやろうとしていますか? DBMS_OUTPUTは一般的にはアドホック・メッセージのためだけに使用されるものです。あるシステムから別のシステムにデータを渡す方法ではなく、テスト目的で使用します。私があなたの場合は、refカーソルを調べます。これはselectステートメントから呼び出しコードにデータを渡すための推奨ソリューションです。 – Boneist
さて、pl/sqlプロシージャをユーザーインターフェイス(HTMLページのような単純なもの)と統合するための高速なソリューションが必要でした – student0495
ああ、私はすでにREFカーソルを試しました.... – student0495