.net - 过程需要未提供的参数

标签 .net sql-server stored-procedures

我在访问 SQL Server 中的存储过程时遇到错误

Server Error in '/' Application.
Procedure or function 'ColumnSeek' expects parameter '@template', which was not supplied. 

当我通过 .net 的数据连接到 sql (System.data.SqlClient) 调用带有参数的存储过程时,即使我提供了参数,也会发生这种情况。这是我的代码。

SqlConnection sqlConn = new SqlConnection(connPath);
sqlConn.Open();

//METADATA RETRIEVAL
string sqlCommString = "QCApp.dbo.ColumnSeek";
SqlCommand metaDataComm = new SqlCommand(sqlCommString, sqlConn);
metaDataComm.CommandType = CommandType.StoredProcedure;
SqlParameter sp = metaDataComm.Parameters.Add("@template",SqlDbType.VarChar,50);
sp.Value = Template;

SqlDataReader metadr = metaDataComm.ExecuteReader();

我的存储过程是:

   USE [QCApp]
   GO
   SET ANSI_NULLS ON
   GO
   SET QUOTED_IDENTIFIER ON
   GO

   ALTER PROCEDURE [dbo].[ColumnSeek] 
       @template varchar(50)
   AS
   EXEC('SELECT Column_Name, Data_Type 
   FROM [QCApp].[INFORMATION_SCHEMA].[COLUMNS] 
   WHERE TABLE_NAME = ' + @template);

我正在尝试找出我在这里做错了什么。

编辑:事实证明,模板为空,因为我从通过 URL 传递的参数中获取其值,并且搞砸了 url 参数传递(我使用的是 @ 代替 &)

最佳答案

除了这里的其他答案之外,如果您忘记添加:

cmd.CommandType = CommandType.StoredProcedure;

那么你也会得到这个错误。

关于.net - 过程需要未提供的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/368642/

相关文章:

c# - .NET 中的嵌入式 Web 服务器

sql-server - 如何为 GORM 关闭 IDENTITY_INSERT

c# - 将 SQL Server 异常传递给 .net

MySQL 存储过程不会获取整个表

mysql - 存储过程从动态sql创建存储过程

c# - 如何使工作 'do not copy' app.config到输出目录?

c# - 无法调用服务,WCF 测试客户端?

sql - 存储过程 : get 3 values from a table and save them to another table

c# - 为什么 Xml 文档的 selectSingleNode 有空值?

.net - 存储用户名和密码以从没有集成安全性的 Windows 服务访问 SQL Server