Dot-Net

過程需要未提供的參數

  • December 15, 2008

訪問 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 參數傳遞(我使用的是@for 而不是&

我會檢查我的應用程式碼並查看您將 @template 設置為什麼值。我懷疑它是空的,這就是問題所在。

除了這裡的其他答案,如果您忘記輸入:

cmd.CommandType = CommandType.StoredProcedure;

然後你也會得到這個錯誤。

引用自:https://stackoverflow.com/questions/368642