2013-10-04 73 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

那是正確的。你已經傳遞出參數值。 –