首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误42000 Mydac TMyquery sql脚本错误解析

错误42000 Mydac TMyquery sql脚本错误解析
EN

Stack Overflow用户
提问于 2013-08-18 22:46:01
回答 1查看 280关注 0票数 0

我需要帮助Mydac TMyquery不工作这个脚本在navicat和sqlfiddle工作,但tmyquery不工作

代码语言:javascript
复制
SET @@group_concat_max_len = 32000;
SELECT
  group_concat(concat('sum(ifnull(if(s.id=',s.id,',m.qty,0),0))`',s.sizes,'`'))eval,
  group_concat(concat('i.`',s.sizes,'`'))list
INTO @eval, @list
from(
  SELECT DISTINCT s.id, s.sizes
  FROM property p
  JOIN size_goods s ON s.id=p.id_sizes
  WHERE p.id_goods IN (6,7,8)
  ORDER BY s.id
  )s;
SELECT group_concat(p.id)
INTO @where
  FROM property p
  WHERE p.id_goods IN (6,7,8)
  ;
SET @sql=concat_ws(' ',
  'select g.id, g.name, g.model,',
  @list,',i.Total,i.price,i.cargo_payment,i.Cost from(select p.id_goods id,',@eval,
  ',sum(ifnull(m.qty,0))Total',
  ',ifnull(sum(price*qty)/sum(qty),0)price',
  ',ifnull(sum(cargo_payment*qty)/sum(qty),0)cargo_payment',
  ',sum(ifnull(m.qty*(m.price+m.cargo_payment),0))Cost',
  'from property p',
  'join size_goods s on s.id=p.id_sizes',
  'left join (',
    'select id_property, id_actions, qty*(3-2*id_actions)qty, price, cargo_payment from moves',
    ') m on m.id_property=p.id',
  'where p.id in (',@where,')',
  'group by p.id_goods',
  ')i left join  goods g on g.id=i.id;'
  );  
SELECT @sql;
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;

错误是最接近42000的sql语法

EN

回答 1

Stack Overflow用户

发布于 2013-08-20 16:10:47

关键是MySQL不能准备这样的SQL语句。不能使用API调用准备PREPARE、EXECUTE或DEALLOCATE PREPARE语句。有关更多信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html。若要避免此问题,应在不调用TMyQuery.Prepare方法的情况下调用TMyQuery.Open方法。要获取结果值,可以使用AsString属性。下面是一个代码示例:

代码语言:javascript
复制
MyQuery.Open;
ShowMessage(MyQuery.Fields[0].AsString);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18300272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档