未指定的错误MySQL功能&德尔福

时间:2014-02-18 20:15:15

标签: mysql sql function delphi delphi-xe3

我尝试在Delphi中调用MySQL函数,但我不能Unspecified error.

样本函数1是:

CREATE FUNCTION `TEST`(`test` INT)
    RETURNS INT
    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
    RETURN 123+TEST ;
END

另一个SQL函数示例:

CREATE FUNCTION `GET_OPTION_AS_INT`(`id` INT)
    RETURNS bigint(20)
    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT 'GET option value'
BEGIN
    RETURN CAST((SELECT `option_value` FROM `OPTION` WHERE `option_id` = `id`) AS UNSIGNED); 
END

我的Delphi代码是:

  qry1.Close;
  qry1.SQL.Clear;
  qry1.SQL.Add('SELECT `TEST`(:test)');
  qry1.Parameters.ParamByName('test').Value := 1 ;
  qry1.Open;

第二个Delphi代码:

  qry1.Close;
  qry1.SQL.Clear;
  qry1.SQL.Add('SELECT GET_OPTION_AS_INT(:id)');
  qry1.Parameters.ParamByName('id').Value := 1 ;
  qry1.Open;

这是一个简单的例子,否则我会使用与GET_OPTION_VALUE和...

相同的其他功能进行测试

我该如何解决?

1 个答案:

答案 0 :(得分:0)

目前,如果这是一个函数或一个select语句是无关紧要的。 只需将一些文本分配给qry1.SQL即可创建参数:test。

使用

查看您的功能
  qry1.Close;
  qry1.SQL.Clear;
  qry1.SQL.Add('SELECT TEST(1)');
  qry1.Open;

如果在设计时创建查询,则在可视SQL查询对象中设置参数类型ParamByName将起作用。

使用参数动态创建SQL是没有意义的,因为您知道参数值无论如何都会...