我在使用Interbase 2009时面临以下问题:
在一个过程中,我在FOR EXECUTE STATEMENT中嵌套了一个EXECUTE STATEMENT。外部EXECUTE STATEMENT收集一些数据并将它们放入一些局部变量中。根据外部EXECUTE STATMENT返回的值,我正在构建第二个SQL字符串。我正在程序中构建两个语句。
伪代码:
SQLSTRING = 'SELECT TEST FROM TABLENAME';
FOR EXECUTE STATMENT SQLSTRING INTO :MYVAR
DO
BEGIN
SQLUPDATESTRING = 'UPDATE TABLENAME SET ' || ' TEST2 = "' || MYVAR || '";';
EXECUTE STATEMENT SQLUPDATESTRING;
/* PLACEHOLDER */
END
此代码导致错误:
Invalid token.
Could not execute statement : .
Dynamic SQL Error.
SQL error code = -104.
如果我将“CONTINUE”,“EXIT”或“SUSPEND”添加到/ PLACEHOLDER /它适用于第一行。我想在循环中执行的语句也是正确的(使用调试返回进行测试)。
所以我的问题是为什么Interbase认为该语句是空的(我认为它是空的,因为它告诉我:“无法执行语句:。”)。
如果我直接中止循环,我可以看到我的变量不是空的,尤其是那个保存要执行的SQL字符串的变量。
我试过在一个程序中只执行一个语句。所以我将第二次执行移动到第二个程序,但这并没有解决问题。
有任何想法吗?我现在试图解决这个问题......