私はストアドプロシージャの変数がMySQLで期待値を返さないのですか?
create procedure create_view (IN t varchar(50))
BEGIN
prepare stmt from 'select @cnt= count(weight) from test where url = ?;';
execute stmt using @t;
set @base = @cnt /4;
set @offset = @cnt/2;
set @query = concat('create or replace view view_by_url as select url, weight from test where url = ',@t,' order by weight limit ',@base,' , ',@offset,' ;');
select t as 'param';
select cnt as 'count';
select @base as 'base';
select @offset as 'offset';
select @query as 'query';
-- prepare stmt from @query;
-- execute stmt ;
END;
call create_view('a');
そして@t返す「」結果に設定されたが、@cnt、@Baseと@offsetにはない、このコードをデバッグしています。そしてなぜ私は自分自身を説明することはできません。助けてもらえますか?
問題は解決しません。とにかくありがとう。 – munch
@munch: '@ cnt'はどこで宣言されていますか?私はあなたがダイナミックなSQLクエリを使用しているのを参照して、あなたはそれを前に宣言していますか?そうでない場合 - クエリの前に宣言してみてください – sll