Sql ibm db2:在匿名块中将字符串插入数据库
我试图将字符串数据从匿名PL/SQL块插入db2表中 什么有效Sql ibm db2:在匿名块中将字符串插入数据库,sql,plsql,db2,Sql,Plsql,Db2,我试图将字符串数据从匿名PL/SQL块插入db2表中 什么有效 SET SQLCOMPAT PLSQL; BEGIN ... SET ID_CITY = 0; SET city = chr(39) || 'Berlin' || chr(39); SET country_id = 83; SET REVNAME = chr(39) || 'create-script' || chr(39); SET REVCREATOR = chr(39) || 'create-script' || chr(3
SET SQLCOMPAT PLSQL;
BEGIN
...
SET ID_CITY = 0; SET city = chr(39) || 'Berlin' || chr(39); SET country_id = 83; SET REVNAME = chr(39) || 'create-script' || chr(39); SET REVCREATOR = chr(39) || 'create-script' || chr(39);
SET statement = 'INSERT INTO fk_city (ID_CITY, city, country_id, is_europe, REVNAME, REVDATE, REVFIRST, last_visit, REVCREATOR ) VALUES ( ' || ID_CITY || ', ' || city ||', ' || country_id || ', true, ' || REVNAME || ', CURRENT DATE, CURRENT DATE, CURRENT DATE, ' || REVCREATOR || ' )';
EXECUTE IMMEDIATE statement;
...
END
我的问题是:是否有其他方法可以使用oneliner插入表中?例如:
EXECUTE IMMEDIATE "INSERT INTO fk_city (ID_CITY, city, country_id, is_europe, REVNAME, REVDATE, REVFIRST, last_visit, REVCREATOR ) VALUES ( 0, 'Berlin', 83, true, 'create-script', CURRENT DATE, CURRENT DATE, CURRENT DATE, 'create-script' )";
上面的语句抛出了一个错误SQL0107N name太长,这似乎与我在第二条语句中使用的字符串分隔符有关,该分隔符在开始和结束时使用execute immediate replace双引号,在语句替换中使用双引号
EXECUTE IMMEDIATE 'INSERT INTO fk_city (ID_CITY, city, country_id, is_europe, REVNAME, REVDATE, REVFIRST, last_visit, REVCREATOR ) VALUES ( 0, ''Berlin'', 83, ''true'', ''create-script'', CURRENT DATE, CURRENT DATE, CURRENT DATE, ''create-script'' )';
我不确定您在当前日期中的意思,也许它应该是一些日期时间函数,如sysdate。为什么要使用动态语句?为什么不使用绑定变量?代码是PHP脚本的一部分,它会针对数据库触发语句。绑定变量如何解决我的问题?当前日期是SQL语句开始的时间点的特殊寄存器。谢谢你的帮助!