存储过程变量在MySQL中未返回预期值?
我正在调试这个代码存储过程变量在MySQL中未返回预期值?,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我正在调试这个代码 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
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在结果集中返回“a”,但@cnt、@base和@offset不返回。我无法解释为什么。您能给我一些帮助吗?在存储过程末尾尝试单选:
SELECT
t as 'param',
@cnt as 'count',
@base as 'base',
@offset as 'offset',
@query as 'query';
在存储过程末尾尝试单选:
SELECT
t as 'param',
@cnt as 'count',
@base as 'base',
@offset as 'offset',
@query as 'query';
问题似乎出在SELECT中。“=”运算符是比较或类似的,而在本例中,为了实现所需的行为,应使用“:=”
prepare stmt from 'select @cnt= count( weight ) from test where url = ?;';
此更改使整个代码工作正常。问题似乎出在SELECT中。'='运算符是比较或类似的,而在本例中,为了实现所需的行为,应使用“:=”
prepare stmt from 'select @cnt= count( weight ) from test where url = ?;';
此更改使整个代码工作正常。@munch:cnt在哪里声明?我看到您正在动态sql查询中使用,但您以前声明过吗?如果没有-请尝试在query@munch:在哪里声明了
@cnt
?我看到您正在动态sql查询中使用,但您以前声明过吗?如果不是-尝试在查询前声明