我在 MYSQL 中创建了一个存储过程。我将 6 个输入传递给存储过程。我有 260 列,列名为finewt_1、finewt_2、finewt_3 ....finewt_260。
我的存储过程是:
Create procedure GetImg($r35 double,
r36 double,
$r37 double,
r38 double,
$r39 double,
r40 double)
begin
select img_id,img_path,
((pow((r36-finewt_$r35),2))+(pow((r38-finewt_$r37),2))+(pow((r40-finewt_$r39),2))) as distance from tbl_fine
end
当我尝试从 php 调用此存储过程时,它给了我一个错误,提示找不到 finewt_$r35。我想进行计算,如果假设 $r35=50 我想要(r36-finewt_50)。我怎样才能做到这一点?这只是我的 sql 语句的一小部分,我必须为 30,000 多个图像执行此操作,所以我不想使用另一个 select 语句。我怎么解决这个问题?
我尝试使用动态 sql 也收到错误消息:
Unknown column 'finewt_13' in 'field list'
我的动态sql是:
Create procedure GetImg($r35 double,
r36 double,
$r37 double,
r38 double,
$r39 double,
r40 double)
begin
Set @s=CONCAT('select img_id,img_path,
((pow((r36-',finewt_$r35,'),2))+(pow((r38-',finewt_$r37,'),2))+(pow((r40-finewt_$r39),2))) as distance from tbl_fine');
PREPARE stmt FROM @s;
EXECUTE stmt;
end
当我尝试这个时:
CONCAT(......(pow((r36-finewt_',$r35,'),2))+(pow((r38-finewt_',$r37,')),2)+(pow((r40-finewt_',$r39,'),2)).....
我得到错误:
Incorrect parameter count in the call to native function 'pow'