3

私はいくつかのクエリをストアド プロシージャにロールバックしていて、エラーが発生しました...ただし、宣言されていないと主張する変数が実際にはテーブル名であること#1327 - Undeclared variableは奇妙なことです。


問題に取り組む

だから私はそれが落ちていたプロシージャのビットを抽出し、PHPMyAdmin を介してデータベース上で直接通常の SQL クエリとして実行しようとしました... 同じこと。いじくり回した後、別のテーブルに参加しているようです。

単一のテーブルでクエリを実行すると、次のように問題ありません。

SET @i_channel_id = 3;
SET @i_product_id = 90;

SELECT 
`product_status_to_channel`.`status_code` INTO @s_status_code

FROM `product_status_to_channel`

WHERE `product_status_to_channel`.`channel_id` = @i_channel_id
AND `product_status_to_channel`.`product_id` = @i_product_id

ORDER BY IF(`product_status_to_channel`.`date` IS NULL, 1, 0) ASC, 
    `product_status_to_channel`.`date` DESC

LIMIT 0, 1;

SELECT @s_status_code AS status_code;


これは PHPMyAdmin の 'LIVE'を 出力します - これは問題ありません。status_code


ただし、JOIN関連するステータス メッセージを見つけるためにメッセージ テーブルを参照しようとすると、次のエラーが表示されます: #1327 - Undeclared variable: product_status_to_channel_lang... but product_status_to_channel_langis a table?!

SET @i_channel_id = 3;
SET @i_language_id = 3;
SET @i_product_id = 90;

SELECT 
`product_status_to_channel`.`status_code` INTO @s_status_code,
`product_status_to_channel_lang`.`string` INTO @s_status_message

FROM `product_status_to_channel`

LEFT JOIN `product_status_to_channel_lang`
    ON `product_status_to_channel`.`product_status_to_channel_id` = `product_status_to_channel_lang`.`product_status_to_channel_id`
    AND `product_status_to_channel_lang`.`language_id` = @i_language_id

WHERE `product_status_to_channel`.`channel_id` = @i_channel_id
AND `product_status_to_channel`.`product_id` = @i_product_id

ORDER BY IF(`product_status_to_channel`.`date` IS NULL, 1, 0) ASC, `product_status_to_channel`.`date` DESC

LIMIT 0, 1;

SELECT @s_status_code AS status_code, @s_status_message AS status_message;


product_status_to_channel_lang.product_status_to_channel_idJOIN で変数として 評価しようとしていますか?

LEFT JOIN `product_status_to_channel_lang`
    ON `product_status_to_channel`.`product_status_to_channel_id` = `product_status_to_channel_lang`.`product_status_to_channel_id`


私は明らかな何かを見落としていると思いますか?

私は両方でこれを試しました:

  • MySQL 5.5.27 で xampp を実行する Win7 ボックス - MySQL Community Server (GPL)
  • MySQL 5.1.73-1-log を実行する Debian ボックス - (Debian)
4

1 に答える 1