Mysql 未知列';x';在';其中第'条;

Mysql 未知列';x';在';其中第'条;,mysql,delphi,Mysql,Delphi,我正在使用MySql,Delphi。 下面的代码有什么问题 我得到“where子句中的未知列'x'” 错误-->where子句中的未知列“\u code\u ehda\u konandeh” 我非常需要它。 2天后我必须做这个项目 请 问候 IF NOT EXISTS(SELECT * FROM bimar WHERE `_code_ehda_konandeh` = `code_ehda_konandeh`) THEN

我正在使用MySql,Delphi。 下面的代码有什么问题

我得到“where子句中的未知列'x'” 错误-->where子句中的未知列“\u code\u ehda\u konandeh” 我非常需要它。 2天后我必须做这个项目 请


问候

  IF NOT EXISTS(SELECT * FROM bimar WHERE `_code_ehda_konandeh` = `code_ehda_konandeh`) THEN
                                          ^---                ^---
删除指示的引号。反勾号用于“转义”保留字。它们还强制MySQL将这些转义词视为字段/表名。您的参数不是字段,因此MySQL被迫将其误解为字段


删除指示的引号。反勾号用于“转义”保留字。它们还强制MySQL将这些转义词视为字段/表名。您的参数不是字段,因此MySQL被迫将其误解为字段。

虽然我指出了您的sql代码中可能存在的错误,但我想提供更多详细信息


在MySql上运行的存储过程没有任何问题,但是当将Delphi参数发送到sp时,我得到了错误
在您的过程创建过程中有一个重要的步骤。由于此原因,引发了运行时异常。
在创建时不检查存储过程代码的语义。在运行时,会检测到未声明的变量,并为对未声明变量的每个引用生成一条错误消息。然而,SP似乎认为任何引用都表示列,即使语法上下文排除了这一点。这会导致在执行此过程时出现非常混乱的错误消息。

标准测试示例如下所示:

mysql> drop procedure proc_test;
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter //
mysql> CREATE PROCEDURE proc_test()
    -> BEGIN
    ->     select current_day;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)
在这里,您可以理解在
当前的
是什么时候忽略了过程编译

mysql> delimiter ;
mysql> call proc_test();
ERROR 1054 (42S22): Unknown column 'current_day' in 'field list'
mysql>

有了这一点,您应该理解
在MySql上运行的存储过程没有任何问题…
是不正确的


对您的查询进行快速修复将解决此问题。您提到,
我使用uu前缀定义了输入参数。我不知道我该怎么办。如果这是真的,那么
改变


它应该是有效的。这里我假设
code\u ehda\u konandeh
也是表
bimar
的一列。

虽然我指出了sql代码中可能存在的错误,但我想给出更多细节


在MySql上运行的存储过程没有任何问题,但是当将Delphi参数发送到sp时,我得到了错误
在您的过程创建过程中有一个重要的步骤。由于此原因,引发了运行时异常。
在创建时不检查存储过程代码的语义。在运行时,会检测到未声明的变量,并为对未声明变量的每个引用生成一条错误消息。然而,SP似乎认为任何引用都表示列,即使语法上下文排除了这一点。这会导致在执行此过程时出现非常混乱的错误消息。

标准测试示例如下所示:

mysql> drop procedure proc_test;
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter //
mysql> CREATE PROCEDURE proc_test()
    -> BEGIN
    ->     select current_day;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)
在这里,您可以理解在
当前的
是什么时候忽略了过程编译

mysql> delimiter ;
mysql> call proc_test();
ERROR 1054 (42S22): Unknown column 'current_day' in 'field list'
mysql>

有了这一点,您应该理解
在MySql上运行的存储过程没有任何问题…
是不正确的


对您的查询进行快速修复将解决此问题。您提到,
我使用uu前缀定义了输入参数。我不知道我该怎么办。如果这是真的,那么
改变


它应该是有效的。这里我假设
code\u ehda\u konandeh
也是表
bimar
的一列。

在MySql上运行的存储过程没有任何问题,但是当将Delphi参数发送到sp时,我得到了错误@哈梅德卡姆拉瓦-肯定是错误
\u code\u ehda\u konandeh
必须是过程的输入参数,
code\u ehda\u konandeh
是列名,前缀不带下划线。我确实对错误堆栈跟踪有疑问。向我们显示
desc bimar
@Ravinder-I定义的带有前缀的输入参数的结果。我不知道我该怎么办@哈梅德卡姆拉瓦-那么引用
'code\u ehda\u konandeh`
肯定是错误的。
bimar
是否同时具有
code\u ehda\u konandeh
\u code\u ehda\u konandeh
字段?您的查询显示,
code\u ehda\u konandeh
ehda\u konandeh
表的一个字段,但不是
bimar
。那么,你怎么可以在<代码>中使用< < /代码>子句而不引用它的表名?@哈默德卡姆拉瓦,如果你解决了问题,考虑接受答案;在MySql上运行的存储过程没有任何问题,但是当将Delphi参数发送到sp时,我得到了那个错误@哈梅德卡姆拉瓦-肯定是错误
\u code\u ehda\u konandeh
必须是过程的输入参数,
code\u ehda\u konandeh
是列名,前缀不带下划线。我确实对错误堆栈跟踪有疑问。向我们显示
desc bimar
@Ravinder-I定义的带有前缀的输入参数的结果。我不知道我该怎么办@哈梅德卡姆拉瓦-那么引用
'code\u ehda\u konandeh`
肯定是错误的。
bimar
是否同时具有
code\u ehda\u konandeh
\u code\u ehda\u konandeh
字段?您的查询显示,
code\u ehda\u konandeh
ehda\u konandeh
表的一个字段,但不是
bimar
。那么,你怎么可以在<代码>中使用< < /代码>子句而不引用它的表名?@哈默德卡姆拉瓦,如果你解决了问题,考虑接受答案;
SELECT * FROM bimar WHERE `_code_ehda_konandeh` = `code_ehda_konandeh`
SELECT * FROM bimar WHERE `code_ehda_konandeh` = _code_ehda_konandeh