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.
 

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.




Preguntas similares