Estoy haciendo declaración de fusión en mi procedimiento almacenado. Necesito contar las filas durante las actualizaciones y las inserciones. Si utilizo una variable común para obtener las filas actualizadas (tanto para actualizar como para insertar) cómo puedo diferir, este es el recuento que recibí de la actualización y este es el recuento que obtuve de insert. Por favor, dame una mejor maneraDeclaración de combinación de SQL Server
5
A
Respuesta
8
Puedes crear una variable de tabla para mantener el tipo de acción y luego OUTPUT
la columna pseudo $action
.
Ejemplo
/*Table to use as Merge Target*/
DECLARE @A TABLE (
[id] [int] NOT NULL PRIMARY KEY CLUSTERED,
[C] [varchar](200) NOT NULL)
/*Insert some initial data to be updated*/
INSERT INTO @A
SELECT 1, 'A' UNION ALL SELECT 2, 'B'
/*Table to hold actions*/
DECLARE @Actions TABLE(act CHAR(6))
/*Do the Merge*/
MERGE @A AS target
USING (VALUES (1, '@a'),(2, '@b'),(3, 'C'),(4, 'D'),(5, 'E')) AS source (id, C)
ON (target.id = source.id)
WHEN MATCHED THEN
UPDATE SET C = source.C
WHEN NOT MATCHED THEN
INSERT (id, C)
VALUES (source.id, source.C)
OUTPUT $action INTO @Actions;
/*Check the result*/
SELECT act, COUNT(*) AS Cnt
FROM @Actions
GROUP BY act
devoluciones
act Cnt
------ -----------
INSERT 3
UPDATE 2
Cuestiones relacionadas
- 1. SQL Server con combinación interna
- 2. Declaración de variables SQL - SQL Server
- 3. Combinación de ORDER BY AND UNION en SQL Server
- 4. Combinación de "LIKE" y "IN" para SQL Server
- 5. orden de combinación declaración de operación
- 6. Utilidad de la declaración "con cifrado" de SQL Server
- 7. SQL combinación izquierda (múltiple condición de combinación)
- 8. Combinación de varias condiciones en una declaración de caso único en el servidor Sql
- 9. instrucción de combinación múltiple de SQL
- 10. SQL combinación interna sintaxis
- 11. múltiples Sentencias Select utilizando SQL Server 2005 "CON" Declaración
- 12. Declaración preparada en ASP.Net C# cuando se usa SQL Server
- 13. Expresiones regulares de SQL Server
- 14. consulta de combinación columnas de SQL
- 15. Diferencia entre la unión de bucle anidado y la combinación de hash en SQL Server 2008
- 16. Transacción de SQL Server y instrucción SELECT
- 17. Optimización SQL Declaración de caso
- 18. Diferencias en la combinación de SQL
- 19. SQL interno vs pregunta de combinación izquierda
- 20. problema de combinación externa izquierda
- 21. SQL Server 2008 a SQL Server 2005
- 22. caso de SQL nula Server 2008
- 23. Estadísticas de SQL Server
- 24. Sesión de SQL Server
- 25. instrucciones de formato SQL en SQL Server Management Studio 2008
- 26. degradación de SQL Server 2008 a SQL Server 2005
- 27. Cambiando de usar SQL Server Express a SQL Server Compact
- 28. SQL Server Linked Server Ejemplo de consulta
- 29. SQL en SQL Server
- 30. SQL Server 2005 - Orden de combinaciones internas
qué datos se pueden almacenar en la columna acto .. Esto es, si quiero saber cuántas filas se inserta, necesito consultar la tabla con algún tipo de restricción bien, ¿para eso necesito saber que wat data puede entrar en la columna cuando se inserta? así como cuando ocurrió la actualización? –
'select @ l_ins_row = COUNT (*) de @action donde act =' insertado '' –
como necesito obtener el recuento de cada operación –