¿Cómo pasar el parámetro de tabla de valor a procedimiento almacenado usando ADO.Net?Pasar parámetro de tabla de valor utilizando ADO.Net
Respuesta
Crear tipo en SQL Server:
CREATE TYPE [dbo].[MyDataType] As Table ( ID INT, Name NVARCHAR(50) )
Crear Procedimiento:
CREATE PROCEDURE [dbo].[MyProcedure] ( @myData As [dbo].[MyDataType] Readonly ) AS BEGIN SELECT * FROM @myData END
Crear DataTable en C#:
DataTable myDataTable = new DataTable("MyDataType"); myDataTable.Columns.Add("Name", typeof(string)); myDataTable.Columns.Add("Id", typeof(Int32)); myDataTable.Rows.Add("XYZ", 1); myDataTable.Rows.Add("ABC", 2);
Crear SQL Parámetro:
SqlParameter parameter = new SqlParameter(); parameter.ParameterName = "@myData"; parameter.SqlDbType = System.Data.SqlDbType.Structured; parameter.Value = myDataTable; command.Parameters.Add(parameter);
Esta pregunta es un duplicado de How to pass table value parameters to stored procedure from .net code. Consulte esa pregunta para ver un ejemplo que ilustra el uso de DataTable
o IEnumerable<SqlDataRecord>
.
He intentado esto y recibió la excepción:
El parámetro tipo de tabla '@MyDataType' debe tener un nombre de tipo válido.
que tuvieron que establecer la propiedad "nombre de tipo" de la SqlParameter:
parameter.TypeName = "MyDataType";
sí. tienes razón, debe establecerse "TypeName". –
Agregar el esquema db como parte del nombre de la tabla lo hizo por mí: DataTable myDataTable = new DataTable ("dbo.MyDataType"); – noontz
Puede prefijar con Exec
using(SqlConnection con = new SqlConnection("Server=.;database=employee;user=sa;password=12345"))
{
SqlCommand cmd = new SqlCommand(" exec ('drop table '[email protected])" , con);
cmd.Parameters.AddWithValue("@tab" ,"Employee");
con.Open();
cmd.ExecuteNonQuery();
}
- 1. Cómo pasar un parámetro de valor de tabla
- 2. pasar un array como valor en un DbParameter ado.net
- 3. Parámetro del valor de la tabla del Servidor SQL Php
- 4. ¿Cómo se especifica 'DEFAULT' como un valor de parámetro de SQL en ADO.NET?
- 5. Pasar un valor de Enum como parámetro de JSF
- 6. SQL dinámico (pasar el nombre de la tabla como parámetro)
- 7. Cómo pasar la palabra clave predeterminada para la función de tabla llamada en ADO.NET
- 8. Cómo pasar un valor de parámetro a a4j: jsFunction
- 9. Problemas con el rendimiento de parámetro de valor de tabla
- 10. Cómo ALTERAR el parámetro de valor de tabla
- 11. Utilizando el valor de un parámetro con plantilla value_type
- 12. Valores del parámetro IntelliTrace y ADO.NET
- 13. Cómo pasar parámetros a la tabla función de valor
- 14. ¿Cómo pasar un valor específico al parámetro del convertidor?
- 15. Classic ADO.NET - ¿Cómo pasar UDT al procedimiento almacenado?
- 16. Obtener el valor de retorno del procedimiento almacenado en ADO.NET
- 17. Datatables - cómo pasar el parámetro de búsqueda en una url
- 18. ADO.NET Data Services - parámetro de formato - xml/json
- 19. Tabla de datos ADO.NET frente a lector de datos
- 20. Parámetros de ADO.NET TableAdapter
- 21. Cómo pasar los parámetros de valor de la tabla al procedimiento almacenado desde el código .net
- 22. C++ utilizando 'esto' como parámetro
- 23. Pasando la tabla Valor del parámetro para el procedimiento almacenado en diferentes bases de datos
- 24. Enlazando la lista vacía o el valor nulo al parámetro de tabla de valor en un procedimiento almacenado (.net)
- 25. Pasar una función (con parámetros) como parámetro?
- 26. Al pasar delegado como parámetro de método
- 27. Cómo pasar predicado como parámetro de función
- 28. Ventajas de pasar una función como parámetro
- 29. Cómo invocar eficientemente parámetros con valores de tabla desde Ado.Net
- 30. Cómo recuperar el valor escalar del procedimiento almacenado (ADO.NET)
Esto sólo es aplicable en SQL Server 2008 –
mismo está trabajando bien con SQL Server 2012 también. –
Quise decir que esto está disponible solo para servidores Sql 2008 y superiores, y que funcionaría también en 2012. –