Eu quero executar este procedimento armazenado de um programa C #.
Eu escrevi o seguinte procedimento armazenado em uma janela de consulta do SqlServer e o salvei como armazenado1:
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();
}
}
}
Isso exibe a exceção Cannot find the stored procedure dbo.test
. Preciso fornecer o caminho? Se sim, em que local os procedimentos armazenados devem ser armazenados?
Respostas:
fonte
conn.Close
, está implícito naDispose
Open
eClose
chamadas. Se você disser, refatorar o objeto de conexão como um campo no futuro e remover a instrução using, você pode acidentalmente esquecer de adicionarClose
e terminar com uma conexão aberta.Parameters
coleção doSqlCommand
objeto.Aqui estão alguns links interessantes que você pode ler:
fonte
public sealed class SqlCommand : System.Data.Common.DbCommand, ICloneable, IDisposable
. Colocá-lo emusing
declaração ajudará na limpeza.Chamando o procedimento de armazenamento em c #
fonte
fonte
fonte
Este é um código para executar procedimentos armazenados com e sem parâmetros via reflexão. Observe que os nomes de propriedade dos objetos precisam corresponder aos parâmetros do procedimento armazenado.
fonte
Usando Ado.net
fonte
este é um exemplo de um procedimento armazenado que retorna um valor e é executado em c #
fonte
Usando Dapper. então eu adicionei isso espero que alguém ajude.
fonte
Por favor, verifique Crane (eu sou o autor)
https://www.nuget.org/packages/Crane/
Também possui vários outros recursos que você pode gostar.
fonte
Você quer dizer que seu código é DDL? Nesse caso, o MSSQL não tem diferença. Os exemplos acima mostram bem como invocar isso. Apenas garanta
fonte
Nenhuma resposta Dapper aqui. Então eu adicionei um
fonte