Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Funcion Equivalente de SQL a Oracle

Estas en el tema de Funcion Equivalente de SQL a Oracle en el foro de Oracle en Foros del Web. Hola a todos, estoy iniciando en Oracle y la verdad tengo un problema para pasar una funcion de SQL Server a Oracle. Si alguien me ...
  #1 (permalink)  
Antiguo 08/06/2015, 13:25
 
Fecha de Ingreso: junio-2015
Mensajes: 1
Antigüedad: 8 años, 10 meses
Puntos: 0
Información Funcion Equivalente de SQL a Oracle

Hola a todos,

estoy iniciando en Oracle y la verdad tengo un problema para pasar una funcion de SQL Server a Oracle. Si alguien me podria ayudar estaria muy agradecido.



Código SQL:
Ver original
  1. ALTER FUNCTION [dbo].[FSECVER_TuberiaConexion] (@TubCodi VARCHAR(12))
  2. RETURNS INT
  3. AS
  4. BEGIN
  5. DECLARE @VerId INT
  6. DECLARE @Contador INT
  7. DECLARE @Rpta INT
  8. DECLARE verCursor CURSOR FOR
  9.  
  10. --select * from verTuberiaConexion order by TubCodi, VerId
  11.  
  12.     SELECT VertId
  13.     FROM verTramoGasoducto
  14.     WHERE TraCodi = @TubCodi
  15.     ORDER BY VertId
  16.  
  17.     OPEN verCursor
  18.     SELECT @Contador=0
  19.     SELECT @Rpta=1
  20.  
  21.     FETCH NEXT FROM verCursor INTO @VerId
  22.     WHILE @@FETCH_STATUS = 0
  23.     BEGIN
  24.         IF @Contador <> @VerId
  25.         SELECT @Rpta = 0
  26.  
  27.         FETCH NEXT FROM verCursor INTO @VerId
  28.         SELECT @Contador = @Contador + 1
  29.     END
  30.  
  31.     CLOSE verCursor
  32.     DEALLOCATE verCursor
  33.  
  34. RETURN @Rpta
  35. END
  #2 (permalink)  
Antiguo 09/06/2015, 07:54
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Funcion Equivalente de SQL a Oracle

A simple vista debería ser algo así:
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION FSECVER_TuberiaConexion (TubCodi VARCHAR2)
  2. RETURN NUMBER
  3. IS
  4.  VerId NUMBER;
  5.  Contador NUMBER:=0;
  6.  Rpta NUMBER:=1;
  7. BEGIN
  8.     FOR verCursor IN (
  9.         SELECT VerId
  10.             FROM verTramoGasoducto
  11.             WHERE TraCodi = TubCodi
  12.             ORDER BY VerId ) LOOP
  13.         IF Contador <> verCursor.VerId THEN
  14.          Rpta := 0;
  15.         END IF;
  16.         Contador := Contador + 1;
  17.     END LOOP;
  18. RETURN Rpta;
  19. END;
  20. /

Saludos

Última edición por gnzsoloyo; 09/06/2015 a las 08:08

Etiquetas: sql-server
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:30.