Conversão: código delphi -gt; stored procedure
Salve galera !
No Delphi eu tenho a seguinte expressão:
E na stored procedure, tentei fazer a mesma coisa:
Porém dá erro na coluna 12, que é o parâmetro [b:f87b1fc00b]:fTabela[/b:f87b1fc00b] .
Se alguém puder me ajudar ...
Valeu ! :!:
No Delphi eu tenho a seguinte expressão:
sql.text := ´ update ´+fTabela+´ set ´+ ´ jahretornou = ´+inttostr(fMarca)+ ´ where codigo = ´+inttostr(fCod);
E na stored procedure, tentei fazer a mesma coisa:
CREATE or ALTER PROCEDURE SP_UpdateEhRetorno ( FCOD INTEGER, FMARCA INTEGER, FTABELA VARCHAR(50)) AS begin update :fTabela set jahretornou = :fMarca where codigo = :fCod; end;
Porém dá erro na coluna 12, que é o parâmetro [b:f87b1fc00b]:fTabela[/b:f87b1fc00b] .
Se alguém puder me ajudar ...
Valeu ! :!:
Powerlog Tecnologia
Curtidas 0
Respostas
Flyskin
31/01/2008
em procedimentos e funções o nome da tabela não pode estar em parâmetros... vai ter que criar uma procedure para cada tabela e chamar conforme fo o caso.
se estiver utilizando o oracle, pode criar um código pl/sql buscando o nome da tabela nos objetos do banco.
se estiver utilizando o oracle, pode criar um código pl/sql buscando o nome da tabela nos objetos do banco.
GOSTEI 0
Powerlog Tecnologia
31/01/2008
Estou usando Firebird 2.0
Será que tem alguma coisa do gênero
igual no Delphi, quando usamos, por exemplo, TEdit(sender) ???
Só chutômetro...
Será que tem alguma coisa do gênero
rdb$(´nome-da-tabela´)
igual no Delphi, quando usamos, por exemplo, TEdit(sender) ???
Só chutômetro...
GOSTEI 0
Djjunior
31/01/2008
uhm... é só uma idéia mas vc não pode criar uma variavel do tipo varchar a preencher com o seu código e depois dar um execute nele ?
Só chute....
Só chute....
GOSTEI 0
Powerlog Tecnologia
31/01/2008
No código funciona muito bem; mas é exatamente o contrário do que eu estou fazendo: tirando do código e colocando no banco de dados.
GOSTEI 0
Djjunior
31/01/2008
não falo do sequinte:
Procedure do banco
Procedure do banco
procedure tabName, campo, condicao: varchar(20) var instrucao; begin instrucao = ´Select ´+ campo + ´ from ´ + tabName; if condicao <> ´´ then instrucao = instrucao + ´ where ´ + condicao; exec instrucao end;
GOSTEI 0
Powerlog Tecnologia
31/01/2008
djjunior, vou tirar tudo do código, ficar apenas em procedures...
GOSTEI 0
Pestana_
31/01/2008
utilize [b:de3fe593a2]execute statement[/b:de3fe593a2].
ex.:
flw
ex.:
set term ^ ; create procedure teste_procedure ( nomeTabela varchar(40), nomeCampo varchar(40), id integer, returns (data date) as declare variable codigo integer; begin strSql = ´SELECT id FROM ´ || :nomeTabela || ´ WHERE ´ || :nomeCampo || ´ = ´ || :id; execute statement :strSql into :codigo; end ^ set term ; ^
flw
GOSTEI 0
Pestana_
31/01/2008
utilizando o seu código:
flw.
CREATE or ALTER PROCEDURE SP_UpdateEhRetorno ( FCOD INTEGER, FMARCA INTEGER, FTABELA VARCHAR(50)) AS DECLARE VARIABLE strSql varchar(500); begin strSql = update :fTabela set jahretornou = :fMarca where codigo = :fCod; execute statement :strSql end;
flw.
GOSTEI 0
Powerlog Tecnologia
31/01/2008
Valeu Pestana_ !!!!!!!!!!!!!
Era isso que eu precisava
:!:
Era isso que eu precisava
:!:
GOSTEI 0
Pestana_
31/01/2008
blz, apesar que neste último post eu cometi alguns erro de digitação (esqueci de concatenar as strings), mas se você consegiu resolveu o problema tudo bem.
qualquer coisa posta aqui no forum!
flw.
qualquer coisa posta aqui no forum!
flw.
GOSTEI 0
Powerlog Tecnologia
31/01/2008
Deu certo sim Pestana_ , peguei a idéia e funcionou blz !
GOSTEI 0