Я хочу выполнить эту хранимую процедуру из программы на C #.
Я написал следующую хранимую процедуру в окне запроса SqlServer и сохранил ее как storage1:
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
Отредактированный:
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();
}
}
}
Это отображает исключение Cannot find the stored procedure dbo.test
. Нужно ли указывать путь? Если да, в каком месте должны храниться хранимые процедуры?
Ответы:
источник
conn.Close
, подразумеваетсяDispose
Open
иClose
звонки. Если вы скажете, что в будущем вам нужно изменить структуру объекта подключения в качестве поля и удалить оператор using, вы можете случайно забыть добавитьClose
и получить открытое соединение.Parameters
коллекциюSqlCommand
объекта.Вот несколько интересных ссылок, которые вы можете прочитать:
источник
public sealed class SqlCommand : System.Data.Common.DbCommand, ICloneable, IDisposable
. Поместите это вusing
утверждение, поможет очистить.Вызов процедуры Store в C #
источник
источник
источник
Это код для выполнения хранимых процедур с и без параметров через отражение. Обратите внимание, что имена свойств объектов должны соответствовать параметрам хранимой процедуры.
источник
Используя Ado.net
источник
это пример хранимой процедуры, которая возвращает значение и его выполнение в c #
источник
Используя Dapper. так что я добавил это, я надеюсь, кто-нибудь поможет.
источник
Пожалуйста, проверьте Крейн (я автор)
https://www.nuget.org/packages/Crane/
Также есть множество других функций, которые могут вам понравиться.
источник
Вы имеете в виду, что ваш код DDL? Если это так, MSSQL не имеет разницы. Приведенные выше примеры хорошо показывают, как вызвать это. Просто убедитесь
источник
Нет Щеголеватый ответ здесь. Поэтому я добавил один
источник