pb insert语句的表名为变量时如何用execute 80
变量s_1赋值为输入的一个表名,后面的是插入内容stringls_sql,ls_tablenamels_tablename='表名'ls_sql="INSERTINTO"...
变量s_1赋值为输入的一个表名,后面的是插入内容
string ls_sql, ls_tablename
ls_tablename = '表名'
ls_sql = " INSERT INTO "+ ls_tablename + " values(?,?,?,?,?,?,?,?)"
ls_tablename = s_1
execute ls_sql using i_5,d_1,s_5,s_1,i_1,s_2,i_2,s_6
然后execute报错,求解。。。 展开
string ls_sql, ls_tablename
ls_tablename = '表名'
ls_sql = " INSERT INTO "+ ls_tablename + " values(?,?,?,?,?,?,?,?)"
ls_tablename = s_1
execute ls_sql using i_5,d_1,s_5,s_1,i_1,s_2,i_2,s_6
然后execute报错,求解。。。 展开
1个回答
展开全部
--这是拼接迟大sql字符串,你在之前把表名赋值给变码激竖量就铅岁可以了
string ls_sql, ls_tablename
ls_tablename = s_1
ls_sql = " INSERT INTO "+ ls_tablename + " values(?,?,?,?,?,?,?,?)"
execute ls_sql using i_5,d_1,s_5,s_1,i_1,s_2,i_2,s_6
string ls_sql, ls_tablename
ls_tablename = s_1
ls_sql = " INSERT INTO "+ ls_tablename + " values(?,?,?,?,?,?,?,?)"
execute ls_sql using i_5,d_1,s_5,s_1,i_1,s_2,i_2,s_6
追问
但最后一句话还是报错 must reference dynamicstagingarea object
追答
格式1(完全拼接成一句SQL)
EXECUTE IMMEDIATE SQLStatement {USING TransactionObject} ;
例如:
Mysql = "insert into "+表+" values('"+变量1+"','"+变量2+"')"
EXECUTE IMMEDIATE :Mysql ;
格式2
PREPARE DynamicStagingArea FROM SQLStatement {USING TransactionObject} ;
EXECUTE DynamicStagingArea USING {ParameterList} ;
例如:
INT Emp_id_var = 56
string mysql
mysql="DELETE FROM "+表+" WHERE emp_id=?"
PREPARE SQLSA
FROM :mysql;
EXECUTE SQLSA USING :Emp_id_var ;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询