问题
我有一个存储过程,它从函数中执行字符串查询。但当执行字符串时,我一直得到错误
错误代码:1064您的SQL语法有错误;查看与MySQL服务器版本相对应的手册,以获取附近要使用的正确语法第4行处的'UPDATE rm_sensor_combined SET subid=0,rmip='110.7.75.122',dname='ESD-'
波纹管是程序的内容
如果as_option="updateData";则
设置ls_option:="更新">
SET ls_query=(选择fn_Sys_GenUpdateDetail(as_table,ls_option))
结束if
SET@sql:=ls_query
从@sql准备stmt
EXECUTE stmt
存储过程执行这是函数的结果,因此是要执行的查询
引用
'更新rm_sensor_combined\n SET subid=0,rmip='110.7.75.122',dname='ESD-001',dlocation='FFF-GGG-SS',warning_max=2000,alert_max=4000,ispaused=0,isused=1,update_by=''\n其中giuid=1且rscuid=1且(subid=0或rmip='110.7.75.122'或dname='ESD-001'或dlocation='FFF-GGG-SS'或warning_max=2000或alert_max=4000或ispaused=0或isused=1);\n UPDATE rm_sensor_combined \n SET subid=0,rmip='110.7.75.122',dname='ESD-002',dlocation='-',warning_max=2000,alert_max=4000,ispaused=0,isused=0,UPDATE_by=''\n其中giuid=1,rscuid=2和(subid=零或rmip='10.7.75.122]或dname='sD-002'或dlocation='-'或warning_max=2000或alert_max=4000或ispaused=0或isused=0);\n’
未报价
更新rm_sensor_combinedSET subid=0,rmip='110.7.75.122',dname='ESD-001',dlocation='FFF-GGG-SS',warning_max=2000,alert_max=4000,ispaused=0,isused=1,update_by=''其中giuid=1和rscuid=1,并且(subid=0或rmip=‘10.7.75.122’或dname=‘ESD-001’或dlocation=‘FFF-GGG-SS’或warning_max=2000或alert_max=4000或ispaused=0或isused=1)
更新rm_sensor_combinedSET subid=0,rmip='110.7.75.122',dname='ESD-002',dlocation='-',warning_max=2000,alert_max=4000,ispaused=0,isused=0,update_by=''其中giuid=1,rscuid=2,并且(subid=0或rmip=‘10.7.75.122’或dname=‘ESD-002’或dlocation=‘-’或warning_max=2000或alert_max=4000或ispaused=0或isused=0);
任何关于导致错误的原因的帮助都会有所帮助。感谢
https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html说:
prepared语句的SQL语法不支持多语句(即,用;字符分隔的单个字符串中的多个语句)。
您需要一次运行一个语句。