Quiero ejecutar este procedimiento almacenado desde un programa C #.
Escribí el siguiente procedimiento almacenado en una ventana de consulta de SqlServer y lo guardé como almacenado1:
use master
go
create procedure dbo.test as
DECLARE @command as varchar(1000), @i int
SET @i = 0
WHILE @i < 5
BEGIN
Print 'I VALUE ' +CONVERT(varchar(20),@i)
EXEC(@command)
SET @i = @i + 1
END
EDITADO:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace AutomationApp
{
class Program
{
public void RunStoredProc()
{
SqlConnection conn = null;
SqlDataReader rdr = null;
Console.WriteLine("\nTop 10 Most Expensive Products:\n");
try
{
conn = new SqlConnection("Server=(local);DataBase=master;Integrated Security=SSPI");
conn.Open();
SqlCommand cmd = new SqlCommand("dbo.test", conn);
cmd.CommandType = CommandType.StoredProcedure;
rdr = cmd.ExecuteReader();
/*while (rdr.Read())
{
Console.WriteLine(
"Product: {0,-25} Price: ${1,6:####.00}",
rdr["TenMostExpensiveProducts"],
rdr["UnitPrice"]);
}*/
}
finally
{
if (conn != null)
{
conn.Close();
}
if (rdr != null)
{
rdr.Close();
}
}
}
static void Main(string[] args)
{
Console.WriteLine("Hello World");
Program p= new Program();
p.RunStoredProc();
Console.Read();
}
}
}
Esto muestra la excepción Cannot find the stored procedure dbo.test
. ¿Necesito proporcionar el camino? En caso afirmativo, ¿en qué ubicación deben almacenarse los procedimientos almacenados?
c#
sql-server
stored-procedures
Lindo
fuente
fuente
Respuestas:
fuente
conn.Close
, está implícito en elDispose
Open
yClose
llamadas. Si dice, refactorice el objeto de conexión como un campo en el futuro y elimine la instrucción de uso, puede olvidarse accidentalmente de agregarClose
y terminar con una conexión abierta.Parameters
colección delSqlCommand
objeto.Aquí hay algunos enlaces interesantes que puedes leer:
fuente
public sealed class SqlCommand : System.Data.Common.DbCommand, ICloneable, IDisposable
. Ponerlo en unausing
declaración ayudará a limpiar.Llamar al procedimiento de almacenamiento en C #
fuente
fuente
fuente
Este es un código para ejecutar procedimientos almacenados con y sin parámetros a través de la reflexión. Tenga en cuenta que los nombres de las propiedades de los objetos deben coincidir con los parámetros del procedimiento almacenado.
fuente
Mediante el uso de Ado.net
fuente
Este es un ejemplo de un procedimiento almacenado que devuelve un valor y su ejecución en C #
fuente
Usando Dapper. así que agregué esto, espero que alguien ayude.
fuente
Por favor, echa un vistazo a Crane (soy el autor)
https://www.nuget.org/packages/Crane/
También tiene muchas otras características que te pueden gustar.
fuente
¿Quieres decir que tu código es DDL? Si es así, MSSQL no tiene diferencia. Los ejemplos anteriores muestran bien cómo invocar esto. Solo asegúrate
fuente
No Dapper responde aquí. Entonces agregué uno
fuente