Mysql 未知列';x';在';其中第'条;
我正在使用MySql,Delphi。 下面的代码有什么问题 我得到“where子句中的未知列'x'” 错误-->where子句中的未知列“\u code\u ehda\u konandeh” 我非常需要它。 2天后我必须做这个项目 请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
问候
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