[英]Stored procedure variable not returning expected value in 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 在結果集中返回“a”,但 @cnt、@base 和 @offset 不返回。 我無法解釋自己為什么。 你能給我一些幫助嗎?
在存儲過程結束時嘗試單個 SELECT:
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 = ?;';
此更改使整段代碼工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.