Ver Mensaje Individual
  #17  
Antiguo 04-12-2009
Avatar de Axel_Tech
Axel_Tech Axel_Tech is offline
Miembro
 
Registrado: nov 2008
Ubicación: lugar en que está ubicado algo.
Posts: 85
Reputación: 16
Axel_Tech Va por buen camino
Cierto, no me había fijado antes, 'T.CODIGO' lo está interpretando como una cadena de caracteres.
No estoy seguro de que lo que pretendes con ese if se pueda hacer de esa manera, pues como bien has dicho en la última frase no puedes comparar una variable (en este caso un parámetro de entrada) con una columna entera de una tabla.
Puedes hacerlo con un EXISTS como te dije en el SP que puse más arriba:
Código SQL [-]
CREATE PROCEDURE SP_UPDATEORINSERT2(
codigo VARCHAR(20),
nombre VARCHAR(50),
precio NUMERIC(10,4),
AS 
DECLARE VARIABLE COD VARCHAR(20);   /*declaras una variable para meter el codigo de la consulta siguiente:*/
BEGIN

SELECT A.CODIGO 
FROM TABLA2 A 
WHERE NOT EXISTS (SELECT B.CODIGO FROM TABLANUEVA B WHERE B.CODIGO=A.CODIGO)
INTO :COD
Esta consulta mira si ya existe el codigo en la tabla, y entonces haces un if:
Código SQL [-]
IF :COD IS NULL THEN
      INSERT INTO TABLANUEVA.....
ELSE
      UPDATE TABLANUEVA.....

si :COD es null haces el INSERT, si no haces el UPDATE. A ver así que tal.
__________________
No hope, no dreams, no love, my only escape is Underground
Responder Con Cita