我試圖(通過ODBC驅動程序對SQL Server 2005)執行一個存儲過程,我收到以下錯誤:的OdbcCommand在存儲過程 - 「參數未提供」在輸出參數錯誤
Procedure or Function 'GetNodeID' expects parameter '@ID', which was not supplied.
@ID是我的過程OUTPUT參數,存在被指定和被設置爲空值在存儲過程中的輸入@machine:
ALTER PROCEDURE [dbo].[GetNodeID]
@machine nvarchar(32) = null,
@ID int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT * FROM Nodes WHERE [email protected])
BEGIN
SELECT @ID = (SELECT NodeID FROM Nodes WHERE [email protected])
END
ELSE
BEGIN
INSERT INTO Nodes (NodeName) VALUES (@machine)
SELECT @ID = (SELECT NodeID FROM Nodes WHERE [email protected])
END
END
以下是我使用設置的參數的代碼,並撥打程序:
OdbcCommand Cmd = new OdbcCommand("GetNodeID", _Connection);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.Add("@machine", OdbcType.NVarChar);
Cmd.Parameters["@machine"].Value = Environment.MachineName.ToLower();
Cmd.Parameters.Add("@ID", OdbcType.Int);
Cmd.Parameters["@ID"].Direction = ParameterDirection.Output;
Cmd.ExecuteNonQuery();
_NodeID = (int)Cmd.Parameters["@Count"].Value;
我也試過使用Cmd.ExecuteScalar沒有成功。如果我在執行命令之前斷開,我可以看到@machine有一個值。
如果我直接從Management Studio執行該過程,它可以正常工作。
有什麼想法?由於
貴ID參數有什麼樣的價值,同時調試? – Amsakanna 2010-05-10 04:40:47