Select Firebird存储过程在运行时定义表并返回值
我试图在存储过程中执行一些SQL,在运行时设置表,并返回所选值:Select Firebird存储过程在运行时定义表并返回值,select,stored-procedures,firebird,Select,Stored Procedures,Firebird,我试图在存储过程中执行一些SQL,在运行时设置表,并返回所选值: create or alter procedure TEST3 returns ( THE_VAR varchar(128)) as declare variable TABLE_NAME varchar(64); declare variable STMT varchar(128); begin /* Procedure Text */ Table_Name = 'users'; stmt = 'selec
create or alter procedure TEST3
returns (
THE_VAR varchar(128))
as
declare variable TABLE_NAME varchar(64);
declare variable STMT varchar(128);
begin
/* Procedure Text */
Table_Name = 'users';
stmt = 'select firstname from ' || :table_name || ' where userid = 2 into :the_var';
execute statement stmt;
suspend;
end
它导致令牌未知。。。。。。进入
有谁能告诉我它有什么问题吗?您不能使用动态SQL以这种方式将值分配给存储过程上下文中的变量。这需要从
EXECUTE语句中处理。您需要将代码更改为以下内容:
stmt = 'select firstname from ' || :table_name || ' where userid = 2';
execute statement stmt into :the_var;
另请参见。您不能使用动态SQL以这种方式将值分配给存储过程上下文中的变量。这需要从EXECUTE语句中处理。您需要将代码更改为以下内容:
stmt = 'select firstname from ' || :table_name || ' where userid = 2';
execute statement stmt into :the_var;
另见