2つのmysqlプロシージャがあります。一方は他方を呼び出します。私はphpmyadmin
経由でそれらを実行しています。最初のプロシージャが型日付の入力変数を指定し、それをサブプロシージャに渡すと(そして、このプロシージャをphpmyadmin
から呼び出して日付を指定します)、すべて正常に動作します。しかし、最初のプロシージャでその変数を宣言し、プログラムで値を代入して渡すと、非常に奇妙な動作をします。私はこれが変数型と@
シンボルと関係しているとは確信していますが、それを正しく動作させる方法をまだ考えていません。あなたがいただきましたがconcatsを見ることで起こって見ることができますストアドプロシージャを呼び出す変数は、入力変数から来た場合にのみ機能します
手順1
BEGIN
SET @dayToRun = NULL;
SELECT DATE_ADD(DATE(NOW()), INTERVAL -1 DAY) INTO @dayToRun;
SELECT concat("Running analytics for date:",@dayToRun);
SELECT concat("Running [email protected]", NOW());
CALL DataAnalysis_PopulatePreviousDayData();
SELECT concat("Running Generate Main Data [email protected]", NOW());
CALL DataAnalysis_GenerateMainDataSet(@dayToRun);
(@ P0は日付入力変数である)手順2
SET @indate = @p0;
SELECT "Starting gmds";
SELECT concat("Input Date:",@indate);
SELECT concat("Input Date:",indate);
SELECT concat('Input Date:',@indate);
。 @記号のないものだけが有効です。他の文字は、最初の文字列を出力しません。しかし、このプロシージャは、変数が@のように動作します。これは、phpmyadminを使用して呼び出され、日付変数を指定したときに正常に機能します。
concat("Input Date:",@indate)
NULL
concat("Input Date:",indate)
Input Date:2016-04-06
concat('Input Date:',@indate)
NULL
この変数がクエリで使用されると、プロシージャは中断します。