2013-04-07 12 views
1

,在運行時設置表,並返回所選擇的值:火鳥存儲過程定義表在運行時和返回我想在存儲過程中執行一些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 = 'select firstname from ' || :table_name || ' where userid = 2 into :the_var'; 

    execute statement stmt; 

    suspend; 
end 

它導致Token unknown ...... into

誰能告訴我它有什麼問題嗎?

回答

1

您不能使用動態SQL以這種方式將值分配給存儲過程上下文中的變量。這需要從EXECUTE STATEMENT處理。您需要更改您的代碼是這樣的:

stmt = 'select firstname from ' || :table_name || ' where userid = 2'; 
execute statement stmt into :the_var; 

又見EXECUTE STATEMENT documentation