このストアドプロシージャを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では、そこにテーブルを作成できません。逆に、sprocを作成できます。:/
—
Joe Johnston
それにもかかわらず、回答:spが実際に指定した名前(dbo.test)で作成されたかどうかを確認しましたか?dbo以外のユーザーがdbo.testを作成しようとするとどうなるかわかりません... non-dbo.testとして作成されますか?
—
DigCamara 2013
@obayhanこの質問は、あなたがそれを複製する可能性があると主張する質問の2年前に質問されました。今後、最新の質問を重複としてマークしてください。
—
RyanfaeScotland