我在访问 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);
我试图弄清楚我在这里做错了什么。
Edit:事实证明,Template 为空,因为我从通过 URL 传递的参数中获取其值,并且搞砸了 url 参数传递(我正在使用@
为并代替&
)
除了这里的其他答案之外,如果您忘记添加:
cmd.CommandType = CommandType.StoredProcedure;
那么你也会得到这个错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)