Usar quot;:quot; em uma query sem ser para passar parametr
Bom dia.
Estou precisando mandar uma atualização do banco de dados do meu sistema para um cliente. Porém, nessa atualização, vai além de outras coisas, uma nova TRIGGER. Nela, contém um código similar ao exemplo abaixo:
CREATE OR REPLACE FUNCTION tg_teste() RETURNS TRIGGER AS
$BODY$
DECLARE
var1 INTEGER;
var2 VARCHAR;
BEGIN
var1 [color=red:4eb9f3f016][b:4eb9f3f016]:=[/b:4eb9f3f016][/color:4eb9f3f016] 150;
var2 [color=red:4eb9f3f016][b:4eb9f3f016]:=[/b:4eb9f3f016][/color:4eb9f3f016] ´FULANO DE TAL´;
...
END;
$BODY$
LANGUAGE PLPGSQL;
O problema é que o Delphi, melhor dizendo o componente query do Deplhi, entende isso, os dois pontos, como parâmetro e ai acontece o erro.
A pergunta é a seguinte: Tem como usar dois ponto sem ser para passar parâmetro, como no exemplo acima?
Já tentei algo do tipo [color=red:4eb9f3f016][b:4eb9f3f016] \: [/b:4eb9f3f016][/color:4eb9f3f016] como se o barra fosse caracter de escape, mais não funcionou.
Abraço.
Guilherme.
Estou precisando mandar uma atualização do banco de dados do meu sistema para um cliente. Porém, nessa atualização, vai além de outras coisas, uma nova TRIGGER. Nela, contém um código similar ao exemplo abaixo:
CREATE OR REPLACE FUNCTION tg_teste() RETURNS TRIGGER AS
$BODY$
DECLARE
var1 INTEGER;
var2 VARCHAR;
BEGIN
var1 [color=red:4eb9f3f016][b:4eb9f3f016]:=[/b:4eb9f3f016][/color:4eb9f3f016] 150;
var2 [color=red:4eb9f3f016][b:4eb9f3f016]:=[/b:4eb9f3f016][/color:4eb9f3f016] ´FULANO DE TAL´;
...
END;
$BODY$
LANGUAGE PLPGSQL;
O problema é que o Delphi, melhor dizendo o componente query do Deplhi, entende isso, os dois pontos, como parâmetro e ai acontece o erro.
A pergunta é a seguinte: Tem como usar dois ponto sem ser para passar parâmetro, como no exemplo acima?
Já tentei algo do tipo [color=red:4eb9f3f016][b:4eb9f3f016] \: [/b:4eb9f3f016][/color:4eb9f3f016] como se o barra fosse caracter de escape, mais não funcionou.
Abraço.
Guilherme.
Guilherme.analista
Curtidas 0
Respostas
Desenvolvimento_camp
09/03/2008
Ja tentou usar só o sinal de igual ao invés do := na sua variável ?
var1 = 150 por exemplo ?
var1 = 150 por exemplo ?
GOSTEI 0
Paulo
09/03/2008
Não sei se é isso, mas acho que o código inteiro deveria estar entre aspas simples. Quando passo qualquer coisa para uma query eu passo assim:
query.sql.add(´Select * from tabela´);
No seu caso passar comando da PL/SQL para uma query acho que deveria ser a mesma coisa ou eu não entendi a sua dúvida? O [color=red:8ee606dd44]:=[/color:8ee606dd44] dentro da PL/SQL é um sinal de atribuição, semelhante ao Delphi. No seu caso está usando o PostgreSql, pelo que parece e não Oracle, mas a sintaxe de ambos tem alguma semelhança, por isso citei PL/SQL, mas dá no mesmo. Acho que deveria estar entre aspas tudo, se é que entendi. Caso contrário, explique melhor. Espero ter ajudado, senão, vale a tentativa,eheheheheheh.
query.sql.add(´Select * from tabela´);
No seu caso passar comando da PL/SQL para uma query acho que deveria ser a mesma coisa ou eu não entendi a sua dúvida? O [color=red:8ee606dd44]:=[/color:8ee606dd44] dentro da PL/SQL é um sinal de atribuição, semelhante ao Delphi. No seu caso está usando o PostgreSql, pelo que parece e não Oracle, mas a sintaxe de ambos tem alguma semelhança, por isso citei PL/SQL, mas dá no mesmo. Acho que deveria estar entre aspas tudo, se é que entendi. Caso contrário, explique melhor. Espero ter ajudado, senão, vale a tentativa,eheheheheheh.
GOSTEI 0
Guilherme.analista
09/03/2008
Não sei se é isso, mas acho que o código inteiro deveria estar entre aspas simples. Quando passo qualquer coisa para uma query eu passo assim:
query.sql.add(´Select * from tabela´);
No seu caso passar comando da PL/SQL para uma query acho que deveria ser a mesma coisa ou eu não entendi a sua dúvida? O [color=red:e714036609]:=[/color:e714036609] dentro da PL/SQL é um sinal de atribuição, semelhante ao Delphi. No seu caso está usando o PostgreSql, pelo que parece e não Oracle, mas a sintaxe de ambos tem alguma semelhança, por isso citei PL/SQL, mas dá no mesmo. Acho que deveria estar entre aspas tudo, se é que entendi. Caso contrário, explique melhor. Espero ter ajudado, senão, vale a tentativa,eheheheheheh.
Opa...
É isso mesmo Paulo. Estou usando o PostgreSQL, porém, não funciona colocando o código dentro de aspas simples. O problema é que o Delphi, como vc sabe, entende quando se coloca 2 pontos (:) em uma query, o que vem em seguida é um parâmetro. Mais o código, como vc mesmo citou, é uma pl/sql e ai ta o problema.
Caso vc tenha alguma outra ideia....
Valeu.
GOSTEI 0
Hall 9000
09/03/2008
Que componentes vc está usando e qual o método que usa para executar os comandos? Porque para vc criar ou alterar obejtos de banco de dados como tabelas, triggers, etc... vc tem que usar componente próprio para excutar scripts.. talvez uma query normal funcione chamando o comando Execsql;...
GOSTEI 0
Guilherme.analista
09/03/2008
[quote:6ae85262dc=´Hall 9000´]Que componentes vc está usando e qual o método que usa para executar os comandos? Porque para vc criar ou alterar obejtos de banco de dados como tabelas, triggers, etc... vc tem que usar componente próprio para excutar scripts.. talvez uma query normal funcione chamando o comando Execsql;...[/quote:6ae85262dc]
Estou usando os componentes ZeosLib.
E para executar a query, estou usando o método ExecSQL
Estou usando os componentes ZeosLib.
E para executar a query, estou usando o método ExecSQL
GOSTEI 0
Paulo
09/03/2008
Guilherme, use o componente StoreProc para passar parâmetros para a sua função. Assim: Crie a função no banco e no Delphi, adicione um componente StoreProc, e aponte para a sua função no banco. Selecione os parâmetros e no OnClick do botão escreva:
Acho que assim vai funcionar. Qquer coisa poste aí.
StorecProc.ParamByName(´Param1´).AsInteger := 1;
StorecProc.ParamByName(´Param2´).AsString := ´Teste de Função´;
Exec.StoreProc;
Acho que assim vai funcionar. Qquer coisa poste aí.
GOSTEI 0