Criar Procedure com parâmetros de retorno dinamicamente

Delphi

16/12/2011

Olá, estou tentando criar dinamicamente (via código) a procedure abaixo, mas retorna o erro: token unknow - line 19, column 7 ?, ou seja, acusa erro daquilo que vem logo depois dos dois pontos.
Fiz a mesma execução via ibExpert e funcionou, mas preciso criar via código.
O que estou fazendo errado?

D2010 - Firebird 2.1.

1: VInstrucao := CREATE OR ALTER procedure CamposNotNullComValorNull returns ( +
2: tabela varchar(100), +
3: campo varchar(100), +
4: total INTEGER) +
5: as +
6: declare variable SQL varchar(1000); +
7: declare variable QTDENULL integer; +
8: begin +
9: for select rdb$field_name, +
10: rdb$relation_name +
11: from rdb$relation_fields +
12: where rdb$relation_name in +
13: ( +
14: select rdb$relation_name +
15: from rdb$relations +
16: where rdb$system_flag = 0 +
17: ) +
18: and rdb$null_flag = 1 +
19: into :campo, :tabela +
20: do begin +
21: sql = select count(*) from || :tabela || where || :campo || is +
22: null; +
23: execute statement :sql into :qtdenull; +
24: total = qtdenull; +
25: if (qtdenull > 0) then suspend; +
26: end +
27: end;

SQLQuery1.SQL.Clear; SQLQuery1.Close;
SQLQuery1.SQL.add(VInstrucao);
SQLQuery1.ExecSQL;

Obrigado.

Valdir
Valdir Dill

Valdir Dill

Curtidas 0

Respostas

Gustavo Bretas

Gustavo Bretas

16/12/2011

Valdir, aqui no Help do Delphi diz que se vc setar a propriedade ParamsCheck para False, ele deixa de interpretar o : como precursor de parâmetros permitindo assim executar instruções DDL no banco.
GOSTEI 0
Valdir Dill

Valdir Dill

16/12/2011

Valdir, aqui no Help do Delphi diz que se vc setar a propriedade ParamsCheck para False, ele deixa de interpretar o : como precursor de parâmetros permitindo assim executar instruções DDL no banco.



Perfeito Bretas. Funcionou belezinha!
Vivendo e aprendendo, rs...

Obrigadão.
GOSTEI 0
Gustavo Bretas

Gustavo Bretas

16/12/2011

Muito bom, agora não esquece de concluir o post! Abraço!
GOSTEI 0
POSTAR