[firebase-br] Criação de Procedure Recursiva, equivalencia a Row_Number() e Updates Complexos
Marcos Thomaz (Prog_CPD)
thomazs em ufac.br
Qua Ago 31 14:13:42 -03 2005
Antes de tudo, desculpem o post ser tão longo, mas não encontrei forma
melhor de me expressar, que ficasse clara (pelo menos ao meu ver).
Dúvida 1 - Criação de Procedure Recursiva
------------------------------------------------
Pessoal, alguém saberia me dizer se eu poderia criar uma procedure que faça
referência a ela mesma??
Tipo assim:
CREATE PROCEDURE MVALOR( N INTEGER, MAXIMO INTEGER)
RETURNS ( VAL1 INTEGER)
AS
BEGIN
VAL1 = N+1;
IF (VAL1 <MAXIMO) THEN
SELECT VAL1 FROM MVALOR( :N + 1 , :MAXIMO ) INTO VAL1
SUSPEND;
END
Dúvida 2 - Equivalencia a Row_Number()
-------------------------------------------
Pessoal, no DB2, tenho a função Row_Number, que me traz o número da linha no
select, mediante a ordem natural do select, ou uma ordem a minha escolha.
Por exemplo:
Na tabela tenho os valores
Nome Valor
José 100,00
Antonio 200,00
Então se eu colocasse:
Select Row_Number() Over() as Row_Number, Nome, Valor From Tabela seria
retornado:
1 José 100,00
2 Antonio 200,00
Select Row_Number() Over(Order By Nome) as Row_Number, Nome, Valor From
Tabela seria retornado:
2 José 100,00
1 Antonio 200,00
Existe algo equivalente no Firebird, ou alguma forma de ter esse número da
linha??
Dúvida 3 - Updates Complexos
----------------------------------------
No DB2 temos uma instrução do update do tipo:
UPDATE TABELA SET (CAMPO1,CAMPO2) = (SELECT CAMPOT1, CAMPOT2 FROM TABELA2
WHERE CAMPOT1> 50 )
Essa instrução atualiza o campo 1 e campo 2 da tabela, pegando
automaticamente os valores da tabela 2.
Ouvi dizer também a respeito da Utilização de Joins em Updates e Deletes
alguém poderia me informar como isso funciona????
Mais detalhes sobre a lista de discussão lista