Я получаю сообщение об ошибке при доступе к хранимой процедуре в 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 param (я использовал @
для и вместо &
)