找不到存储过程

时间:2014-07-12 08:07:53

标签: c# sql sql-server

当我尝试更新表格的数据时,我收到错误

  

找不到存储过程

怎么了?

SQL:

CREATE PROCEDURE GetContactName
   @Name char(20),
   @SecondName char(20) output
as
   SELECT @SecondName = [Second Name] 
   FROM WPF.dbo.contacts 
   WHERE Name = @Name

C#:

sqlConnection.Open();
SqlCommand cmd = new SqlCommand("GetContactName", sqlConnection);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter param = new SqlParameter();
param.ParameterName = "@Name";
param.SqlDbType = SqlDbType.Char;
param.Direction = ParameterDirection.Input;
cmd.Parameters.Add(param);

param = new SqlParameter();
param.ParameterName = "@SecondName";
param.SqlDbType = SqlDbType.Char;
param.Size = 20;
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);

cmd.ExecuteNonQuery();
sqlConnection.Close();

EDIT1

我正在使用VS13和SQL Server 2008 Management Studio。

我找不到存储过程,但是当我执行SQL代码时,它说该过程已经存在。

连接字符串:

Data Source=HOME;Initial Catalog=WPF;Integrated Security=True
  • 数据库:WPF
  • 架构:dbo.contacts

3 个答案:

答案 0 :(得分:1)

这是数据库架构的问题。检查连接字符串中使用的用户标识的默认架构是否与SP的架构匹配。

答案 1 :(得分:1)

只需在查询上方添加USE YourdataBaseName后跟GO。

**USE  YourdataBaseName
Go**

CREATE PROCEDURE GetContactName
   @Name char(20),
   @SecondName char(20) output
as
   SELECT @SecondName = [Second Name] 
   FROM WPF.dbo.contacts 
   WHERE Name = @Name
C#:     

答案 2 :(得分:0)

出于某种原因,当您使用 sql-query 创建过程时,它不会显示在“存储过程”文件夹中。但是,如果您通过从“存储过程”文件夹中的上下文菜单中选择适当的选项来创建过程,则会显示该过程并且一切正常。