ロボット フレームワークを使用して SQL スクリプトを含むストアド プロシージャを実行する
<p>データベースとテーブルの作成とストアド プロシージャの作成を含む SQL スクリプトを実行したいと考えています。
しかし、<strong>SQL スクリプトの実行</strong> キーワードを使用して <strong>データベース ライブラリ</strong> 内の SQL スクリプトを実行しようとすると、次のエラーが発生します: </p>
<pre class="brush:php;toolbar:false;">ProgrammingError: (1064, "SQL 構文にエラーがあります。使用する正しい構文については、MariaDB サーバーのバージョンに対応するマニュアルを確認してください。 '区切り文字 $$\n 作成 OR
REPLACE PROCEDURE `proc_GetCustomerDetails`(\n I...' at line 2'')</pre>
<p>ストアド プロシージャの前に、次の
区切り文字があります: </p>
<pre class="brush:php;toolbar:false;">DELIMITER $$
プロシージャの作成または置換 `proc_GetCustomerDetails`(
IN CustomerNbr 長文、
IN LANG VARCHAR(5)
)
決定的
始める
Lang が NULL の場合は、lang = "fin" を設定します。
終了 IF;
SELECT * from dbname.customer;
終了;$$
区切り文字 ;
<p>ストアド プロシージャ部分をコメント アウトすると、SQL ファイルは残りのテーブル作成ステートメントとともにエラーなしで実行されます。 </p>
<p>Google で検索しましたが、関連する質問が見つかりませんでした。ストアド プロシージャを呼び出すキーワードがあることがわかります。しかし、テーブルの作成とストアドプロシージャを同じSQLファイルに入れて実行したいと考えています。このタスクには MariaDB を使用しています。 </p>
<p>
使用するライブラリ</strong>: </p>
<li>pymysql</li>
<li>ロボット フレームワーク データベース ライブラリ</li>
</ul>
<p>HeidiSQL を使用して SQL ファイルを実行すると、ストアド プロシージャと区切り文字内でエラーが発生せずに実行されます。これは、SQL エラーがないことを意味します。 </p>
<p><strong>誰かこれを修正する方法を教えてもらえますか? </strong></p>