Fórum Criar Procedure com parâmetros de retorno dinamicamente #410657

16/12/2011

0

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

Responder

Posts

16/12/2011

Gustavo Bretas

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.
Responder

Gostei + 0

16/12/2011

Valdir Dill

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.
Responder

Gostei + 0

19/12/2011

Gustavo Bretas

Muito bom, agora não esquece de concluir o post! Abraço!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar