Procedure erwartet einen Parameter, der nicht angegeben wurde

Ich erhalte den Fehler beim Zugriff auf eine gespeicherte Prozedur in SQL Server

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

Dies geschieht, wenn ich eine gespeicherte Prozedur mit einem Parameter über die Datenverbindung von .net zu sql @ aufruf(System.data.SqlClient), obwohl ich den Parameter liefere. Hier ist mein Code.

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();

Und meine gespeicherte Prozedur lautet:

   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);

Ich versuche herauszufinden, was ich hier falsch mache.

Bearbeiten Wie sich herausstellte, war Template null, weil ich seinen Wert von einem Parameter erhalten habe, der über die URL übergeben wurde, und die URL-Parameterübergabe verkorkst habe (ich habe @ verwendet@ für und anstelle von&)

Antworten auf die Frage(20)

Ihre Antwort auf die Frage