gpt4 book ai didi

mysql - 'x' 中的未知列 'where clause'

转载 作者:行者123 更新时间:2023-11-29 04:11:12 24 4
gpt4 key购买 nike

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

我得到“where 子句中的未知列‘x’”错误 --> “where 子句”中的未知列“_code_ehda_konandeh”我太需要它了。我必须在 2 天后做这个项目请…………


   DELIMITER $$

USE `bimarestan`$$

DROP PROCEDURE IF EXISTS `Save_Ehda_Konande`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `Save_Ehda_Konande`(
IN _code_ehda_konandeh VARCHAR(50),
IN _tarikh_moarefi VARCHAR(50),
IN _tarikh_tashkil_parvandeh VARCHAR(50),
IN _name VARCHAR(50),
IN _name_khanevadegi VARCHAR(50),
IN _name_pedar VARCHAR(50),
IN _tarikh_tavalod VARCHAR(20),
IN _tahsilat VARCHAR(50),
IN _vaziyat_taahol VARCHAR(50),
IN _noe_bimeh VARCHAR(50),
IN _gorooh_khoon VARCHAR(50),
IN _rezayat_dahandeh VARCHAR(50),
IN _shoghl VARCHAR(50),
IN _address VARCHAR(50),
IN _telphone VARCHAR(50),
OUT _out INT)
BEGIN
IF LTRIM(RTRIM(_code_ehda_konandeh))<>'' THEN
BEGIN
SET _out = 0;
IF NOT EXISTS(SELECT * FROM bimar WHERE `_code_ehda_konandeh` = `code_ehda_konandeh`) THEN
INSERT INTO `ehda_konandeh` (
code_ehda_konandeh,
tarikh_moarefi,
tarikh_tashkil_parvandeh,
NAME,
name_khanevadegi,
name_pedar,
tarikh_tavalod,
tahsilat,
vaziyat_taahol,
noe_bimeh,
gorooh_khoon,
rezayat_dahandeh,
shoghl,
address,
telphone)
VALUES(
_code_ehda_konandeh,
_tarikh_moarefi,
_tarikh_tashkil_parvandeh,
_name,
_name_khanevadegi,
_name_pedar,
_tarikh_tavalod,
_tahsilat,
_vaziyat_taahol,
_noe_bimeh,
_gorooh_khoon,
_rezayat_dahandeh,
_shoghl,
_address,
_telphone
);
ELSE
SET _out = 1;
END IF;
END;
END IF;
END$$

DELIMITER ;

在 MySql 上运行的存储过程没有任何问题,但是当我想向它发送 delphi 参数时,我得到了那个错误!!

这是我的 delphi 代码:

if flag_new_edit = 1 then
sp_sabt.StoredProcName := 'Save_Ehda_Konande'
else
sp_sabt.StoredProcName := 'Edit_Ehda_Konande';
With sp_sabt Do
Begin
ParamByName('_code_ehda_konandeh').Value := Trim(txt_code_ehda_konande.Text);
ParamByName('_tarikh_moarefi').Value := Trim(txt_tarikh_tavalod.Text);
ParamByName('_tarikh_tashkil_parvandeh').Value := Trim(txt_name_khanevadegi.Text);
ParamByName('_name').Value := Trim(txt_name.Text);
ParamByName('_name_khanevadegi').Value := Trim(txt_name_khanevadegi.Text);
ParamByName('_name_pedar').Value := Trim(txt_name_pedar.Text);
ParamByName('_tarikh_tavalod').Value := Trim(txt_tarikh_tavalod.Text);
ParamByName('_tahsilat').Value := Trim(cmb_tahsilat.Text);
ParamByName('_vaziyat_taahol').Value := Trim(cmb_vaziyat_taahol.Text);
ParamByName('_noe_bimeh').Value := Trim(cmb_noe_bime.Text);
ParamByName('_gorooh_khoon').Value := Trim(cmb_gorooh_khoon.Text);
ParamByName('_rezayat_dahandeh').Value := Trim(txt_rezayat_dahande.Text);
ParamByName('_shoghl').Value := Trim(txt_shoghl.Text);
ParamByName('_address').Value := Trim(txt_adress.Text);
ParamByName('_telphone').Value := Trim(txt_tel.Text);
ExecProc;
End;

问候

最佳答案

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

在 MySql 上运行的存储过程没有任何问题,但是当将 Delphi 参数发送到 sp 时,我得到了那个错误!!但你错了。

a known bug在您的程序创建中。由于引发运行时异常的原因。 在创建时不检查存储过程代码的语义。在运行时,检测到未声明的变量,并为每次引用未声明的变量生成一条错误消息。然而,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>

有了这个你应该明白 That Stored Procedure Runing at MySql WithOut any problems ... 是不正确的。


快速修复您的查询将解决问题。您提到 我用 _ 前缀定义了输入参数。我不知道我必须做什么!。如果这是真的,那么
改变

SELECT * FROM bimar WHERE `_code_ehda_konandeh` = `code_ehda_konandeh`

SELECT * FROM bimar WHERE `code_ehda_konandeh` = _code_ehda_konandeh

它应该可以正常工作。这里我假设 code_ehda_konandeh 也是表 bimar 的一列。

关于mysql - 'x' 中的未知列 'where clause',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com