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

procedimientos de informix a SQL

Estas en el tema de procedimientos de informix a SQL en el foro de SQL Server en Foros del Web. que tal amigos del foro, quisiera hacerles una pregunta, estoy migrando algunas tablas de informix a sql y por lo tanto algunos procedimientos almacenados de ...
  #1 (permalink)  
Antiguo 15/05/2006, 08:15
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
procedimientos de informix a SQL

que tal amigos del foro,

quisiera hacerles una pregunta, estoy migrando algunas tablas de informix a sql y por lo tanto algunos procedimientos almacenados de informix mi duda es la siguiente:

<pregunta:>

algunas sintaxis son diferentes de informix y SQL como en informix existe ( returning, define.... etc) en sql no existe voy a poner donde me sale los errores me podrian echar la mano para ver como se puede adaptar????


Código PHP:

-- Creating procedure--
create procedure califs_alumno(
  @
calif_ciclo CHAR(6),
  @
calif_alumno CHAR(13),
  @
calif_carrera CHAR(3),
  @
calif_plan CHAR(5),
  @
calif_materia CHAR(3)
returning char(2),char(2),char(2),char(2),char(2),char(2), 
            
integer,integer,integer,integer;
/// en esta marca error me dice que no conoce "returning"


//// en esta parte lo cambie en ves de "declare" estaba como "define" lo adapte segun yo a SQL

  
declare @atipoPARCIAL char(2);
  declare @
atipoFINAL char(2);
  declare @
atipoEXTRA char(2);
  declare @
aparcial1 char(2);
  declare @
aparcial2 char(2);
  declare @
aparcial3 char(2);
  declare @
aparcial4 char(2);
  declare @
afinal char(2);
  declare @
aextraordinario char(2);
  declare @
faltas1 integer;
  declare @
faltas2 integer;
  declare @
faltas3 integer;
  declare @
faltas4 integer;
  declare @
faltasjunk integer;

  
select tipoEval into atipoPARCIAL from tipoEval where nombre='PARCIAL';
  
select tipoEval into atipoFINAL from tipoEval where nombre='FINAL';
  
select tipoEval into atipoEXTRA from tipoEval where nombre='EXTRAORDINARIO';


/// el siguiente error me lo marca aqui que no es correcta la forma de llamar una funcion con "CALL"
  
call valor_califcalif_ciclocalif_alumno,
          
calif_carreracalif_plan
          
calif_MateriaatipoPARCIAL,
          
'1'returning aparcial1,faltas1;

  
call valor_califcalif_ciclocalif_alumno,
          
calif_carreracalif_plan
          
calif_MateriaatipoPARCIAL,
          
'2'returning aparcial2,faltas2;

  
call valor_califcalif_ciclocalif_alumno,
          
calif_carreracalif_plan
          
calif_MateriaatipoPARCIAL,
          
'3'returning aparcial3,faltas3;

  
call valor_califcalif_ciclocalif_alumno,
          
calif_carreracalif_plan
          
calif_MateriaatipoPARCIAL,
          
'4'returning aparcial4,faltas4;

  
call valor_califcalif_ciclocalif_alumno,
          
calif_carreracalif_plan,
          
calif_MateriaatipoFINAL,
          
'1'returning afinal,faltasjunk;

  
call valor_califcalif_ciclocalif_alumno,
          
calif_carreracalif_plan
          
calif_MateriaatipoEXTRA,
          
'1'returning aextraordinario,faltasjunk;

  return 
aparcial1,aparcial2,aparcial3,aparcial4,afinal,
         
aextraordinario,faltas1,faltas2,faltas3,faltas4;
end procedure

de antemano se los agradezco
  #2 (permalink)  
Antiguo 15/05/2006, 16:02
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
En SQL Server el return solo acepta un valor y además tiene que ser INT por fuerza (generalmente se utiliza para retorno de errores), de manera que de "returning" en adelante sigue sobrando.

En su lugar puedes usar las variables de salida (output variables) , que agregas al llamado del SP mismo:

DECLARE @var INT OUTPUT
EXEC sp_misp 1, 2, @var OUTPUT
PRINT @var
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 15/05/2006, 17:46
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
otra cosa, en informix no hay left o right, todo es outer. Si no quieres complicarte puedes usar la sintaxis "vieja" *= o =*
  #4 (permalink)  
Antiguo 16/05/2006, 10:28
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
hooo bueno punto, exactamente tiene muchos outers, muchas gracias a los dos ( Myakire, Mithrandir)voy a tratatar de adaptarlo y cuando este comparto la sitaxis.

muchas gracias por el tip.
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 17:34.