Para los anti-cursores

30/12/2004 - 08:55 por Jose Antonio | Informe spam
Necesito realizar una insercion de varias filas a la vez, pero numeradas, yo
pensaba que funcionaba la instruccion sql siguiente:

SET @SERIE 04
SET @CLIENTE‰

INSERT FACTURAS SELECT CLIENTE,FECHA,IMPORTE,(SELECT MAX(FACTURAS.NUMERO)+1
FROM FACTURAS WHERE SERIE=@SERIE) AS NUMERO FROM ALBARAN WHERE
CLIENTE=@CLIENTE

pero no funciona ya que le asigna siempre el mismo NUMERO.

¿Alguna posibilidad de realizarlo sin cursores?
¿Que perdida de rendimiento se obtendria utilizando cursores de solo lectura
hacia adelante?

Cada insercion no sera de mas de 15 o 20 filas, poero puede haber muchas
inserciones seguidas



Saludos.

Preguntas similare

Leer las respuestas

#1 Maxi
30/12/2004 - 14:10 | Informe spam
Hola, fijate si este ejemplo es mas o menos lo que buscas, luego lo podrias
adaptar a todo lo que gustes :-)


CREATE TABLE #FACT (ID INT, CLIENTE VARCHAR(100))

INSERT INTO #FACT VALUES (1,'INTEL')

CREATE TABLE #FACT2 (CLIENTE VARCHAR(100))
GO

INSERT INTO #FACT2 VALUES ('AMD')
INSERT INTO #FACT2 VALUES ('MICROSOFT')
INSERT INTO #FACT2 VALUES ('HP')

INSERT INTO #FACT
SELECT (SELECT COUNT(*) FROM #FACT2 CL WHERE CL.CLIENTE <= #FACT2.CLIENTE) +
(SELECT MAX(ID) FROM #FACT)
,CLIENTE
FROM #FACT2
ORDER BY CLIENTE

SELECT * FROM #FACT

==
Suerte


Salu2
Maxi


"Jose Antonio" escribió en el mensaje
news:%
Necesito realizar una insercion de varias filas a la vez, pero numeradas,
yo
pensaba que funcionaba la instruccion sql siguiente:

SET @SERIE 04
SET @CLIENTE‰

INSERT FACTURAS SELECT CLIENTE,FECHA,IMPORTE,(SELECT
MAX(FACTURAS.NUMERO)+1
FROM FACTURAS WHERE SERIE=@SERIE) AS NUMERO FROM ALBARAN WHERE
CLIENTE=@CLIENTE

pero no funciona ya que le asigna siempre el mismo NUMERO.

¿Alguna posibilidad de realizarlo sin cursores?
¿Que perdida de rendimiento se obtendria utilizando cursores de solo
lectura
hacia adelante?

Cada insercion no sera de mas de 15 o 20 filas, poero puede haber muchas
inserciones seguidas



Saludos.




Respuesta Responder a este mensaje
#2 Battle Troll
30/12/2004 - 19:30 | Informe spam
¡¡Hola tocayo al cuadrado!!
¿La tabla FACTURAS y la de ALBARAN no comparten ningun campo (supongo que
si, pero no me quiero arriesgar a adivinar el nombre de este)?
Porque una forma que se me ocurre, medio manteniendo la estructura de tu
codigo, seria asi:
SET @SERIE 04
SET @CLIENTE‰

INSERT INTO FACTURAS
SELECT (campo comun), CLIENTE, FECHA, IMPORTE, NUMERO
FROM FACTURAS
INNER JOIN
(SELECT (campo comun), SERIE, MAX(FACTURAS.NUMERO)+1 AS NUMERO
FROM FACTURAS WHERE SERIE=@SERIE
GROUP BY (campo comun), SERIE) AS B
ON FACTURAS.(campo comun)= B.(campo comun)
WHERE CLIENTE=@CLIENTE
Respuesta Responder a este mensaje
#3 Jose Antonio
30/12/2004 - 19:59 | Informe spam
el unico campo que comparten es el CLIENTE y creo que con este no se puede
hacer.

"Battle Troll" escribió en el mensaje
news:
¡¡Hola tocayo al cuadrado!!
¿La tabla FACTURAS y la de ALBARAN no comparten ningun campo (supongo que
si, pero no me quiero arriesgar a adivinar el nombre de este)?
Porque una forma que se me ocurre, medio manteniendo la estructura de tu
codigo, seria asi:
SET @SERIE 04
SET @CLIENTE‰

INSERT INTO FACTURAS
SELECT (campo comun), CLIENTE, FECHA, IMPORTE, NUMERO
FROM FACTURAS
INNER JOIN
(SELECT (campo comun), SERIE, MAX(FACTURAS.NUMERO)+1 AS NUMERO
FROM FACTURAS WHERE SERIE=@SERIE
GROUP BY (campo comun), SERIE) AS B
ON FACTURAS.(campo comun)= B.(campo comun)
WHERE CLIENTE=@CLIENTE
Respuesta Responder a este mensaje
#4 Battle Troll
30/12/2004 - 21:02 | Informe spam
OK, veamos... ¿como se llaman los campos ID de ambas tablas? ¿son de tipo
autonumerico?
Respuesta Responder a este mensaje
#5 Jose Antonio
31/12/2004 - 09:03 | Informe spam
Los campos ID de facturas son serie+numero y el de albaranes serie+numero
pero la columna serie de albaranes no tiene que coincidir necesariamente con
la columna serie de facturas. No hay ningun autonumerico.



"Battle Troll" escribió en el mensaje
news:
OK, veamos... ¿como se llaman los campos ID de ambas tablas? ¿son de tipo
autonumerico?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida