2013-10-04 75 views
0

我有以下存储过程:收到错误的参数传递给存储过程

ALTER PROCEDURE sp_InsertHashBinMinHash 
    @Id INT, 
    @HashBin BIGINT, 
    @HashTable INT, 
    @SubFingerprintId BIGINT, 
    @Seqno INT 
AS 

INSERT INTO HashBinsMinHash (
    HashBin, 
    HashTable, 
    Seqno, 
    SubFingerprintId 
    ) OUTPUT inserted.Id 
VALUES 
(
    @HashBin, @HashTable, @Seqno, @SubFingerprintId 
); 

当我运行程序我收到以下错误:

procedure or function sp_insertHashBin expects parameter @Seqno which was not supplied

但我将4个参数传递给过程

+0

它需要5个参数,你唯一的传球4 ... – James

+0

我认为你没有使用/传递Id参数值。使用id = null或传递@id值。 –

回答

0

存在您的问题:sp_InsertHashBinMinHash需要5个参数(Id,HashBin,HashTableSubFingerprintIdSeqno)。你只能用4来调用它。所以缺少一个。

0

我将它改写为

ALTER PROCEDURE sp_InsertHashBinMinHash 
    @HashBin BIGINT, 
    @HashTable INT, 
    @SubFingerprintId BIGINT, 
    @Seqno INT, 
    @Id INT OUT 
AS 
BEGIN 
INSERT INTO HashBinsMinHash (
    HashBin, 
    HashTable, 
    Seqno, 
    SubFingerprintId 
    ) 
VALUES 
(
    @HashBin, @HashTable, @Seqno, @SubFingerprintId 
); 

set @Id = SCOPE_IDENTITY(); 
select @id 
END 

而且,从C#将值传递给你的程序,添加参数@Id用正确的方向属性。

+0

那是正确的。你已经传递出参数值。 –