1

次のステートメントを使用して、PHPから非常に単純なOracleプロシージャを実行しようとしています。

$sql = 'exec procedureName(param1, param2)';
$sql = oci_parse($connection, $sql); oci_execute($sql);

Oracle SQL Developerでこれを実行すると、 「匿名ブロックが完了しました」というメッセージが返されますが、PHPを介して実行すると、「ORA-00900:無効なSQLステートメント」エラーが返されます。

PHPからこの手順を実行する方法はありますか?どうもありがとう

4

2 に答える 2

6

もう少し詳しく見てみると、次のように、プロシージャ呼び出しをPL /SQLBEGIN-ENDペア内に配置する必要があると思います。

$sql = 'BEGIN procedureName(:param1, :param2); END;';
$stmt_id = oci_parse($connection, $sql);
oci_bind_by_name($stmt_id, ':param1', $value1);
oci_bind_by_name($stmt_id, ':param2', $value2);
oci_execute($stmt_id);

の呼び出しで適切な変数名を使用するには、上記を編集する必要がありますoci_bind_by_name

また、SQL文字列にセミコロンが含まれていることが重要であることに注意してください。

共有してお楽しみください。

于 2012-04-18T15:42:52.680 に答える
0
$sql = 'BEGIN procedureName(:param1, :param2); END;';
$stmt_id = oci_parse($connection, $sql);
oci_execute($stmt_id);
于 2018-03-08T07:12:32.853 に答える