La bbdd es Firebird 2.5
El problema es que no me permite crear una tabla e inmediatamente despues insertarle registros.
Código SQL
[-]
CREATE OR ALTER PROCEDURE TV_SP_SPLIT_TABLE (
atable varchar(25),
afield varchar(25))
returns (
rc varchar(1000))
as
declare variable new_tbl varchar(25);
declare variable read_fld varchar(25);
declare variable script1 varchar(1000);
declare variable script2 varchar(1000);
declare variable lexists integer;
begin
script1 = 'SELECT DISTINCT ' || :afield || ' FROM ' || :atable || ' ORDER BY 1';
for execute statement :script1 into :read_fld do
begin
-- existe la tabla?
new_tbl = :atable || '_' || :read_fld;
execute procedure tv_sp_exists_table(:new_tbl) returning_values :lexists;
if (:lexists > 0) then
begin
execute statement 'DELETE FROM ' || :new_tbl;
end else
begin
execute procedure tv_sp_create_dial_table_from(:atable, :new_tbl, :read_fld, :read_fld);
end
script2 = 'INSERT INTO ' || :new_tbl || ' SELECT * FROM ' || :atable ||
' WHERE ' || :afield || ' = ' || :read_fld;
execute statement :script2;
end
-- Todo OK
rc = 1;
-- Hubo un error
when any do
begin
rc = -1;
end
end