Quiero ejecutar este procedimiento almacenado desde un programa C#.Cómo ejecutar un procedimiento almacenado dentro del programa C#
He escrito el siguiente procedimiento almacenado en una ventana de consulta SQL Server y guardado como stored1:
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
. ¿Debo proporcionar el camino? En caso afirmativo, ¿en qué ubicación deben almacenarse los procedimientos almacenados?
Le conviene usar una base de datos que no sea maestra, incluso para las pruebas. Esta es una base de datos del sistema y eventualmente causará problemas.En SQL 2012 no me deja crear una tabla allí. Por el contrario, me permitirá crear un sproc. :/ –
A pesar de las respuestas: ¿ha verificado si su sp se creó realmente con el nombre que dio (dbo.test)? No sé qué pasaría si un usuario no dbo intenta crear dbo.test ... ¿se crearía como no dbo.test? – DigCamara
posible duplicado de [Llamar a un procedimiento almacenado con parámetro en C#] (http://stackoverflow.com/questions/7542517/call-a-stored-procedure-with-parameter-in-c-sharp) – obayhan