簡體   English   中英

存儲過程變量未在 MySQL 中返回預期值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM