我想从C#程序执行此存储过程。
我在SqlServer查询窗口中编写了以下存储过程,并将其保存为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
编辑:
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
。我需要提供路径吗?如果是,应将存储过程存储在哪个位置?
3
您最好使用master以外的数据库进行测试。这是一个系统数据库,最终将导致问题。在SQL 2012中,它不会让我在那里创建表。相反,它将允许我创建一个存储过程。:/
—
Joe Johnston
尽管有答案,您是否检查过您的sp是否实际上是以您给定的名称(dbo.test)创建的?我不知道如果非dbo用户尝试创建dbo.test ...会被创建为non-dbo.test吗?
—
DigCamara
@obayhan这个问题是在您声称它可能与它重复之前2年被问到的。请将来将最新的问题标记为重复。
—
RyanfaeScotland,2015年