2013-05-02 62 views
0

SQL插入問題。運行存儲過程以將行插入到表中並返回創建的ID。當我像這樣運行它並具有輸出參數@ID並使用ExecuteNonQuery()時,它會爲我的int idinserted返回-1,但是會返回插入的ID。自插入記錄後不應該返回1。我想使用ExecuteNonQuery來檢查插入的記錄,然後獲取插入的ID。帶有ExecuteNonQuery和ExecuteScalar的SPROC插入

SQL INSERT

@person bigint, 
@date datetime, 
@ID bigint OUTPUT 

AS 
BEGIN 
    SET NOCOUNT ON; 

    INSERT INTO table(person,DATE_ADDED) 
    VALUES (@person,@date) 

    SELECT @ID = SCOPE_IDENTITY() 
    cmd.Parameters.Clear(); 
    cmd.Parameters.AddWithValue("@person", person); 
    cmd.Parameters.AddWithValue("@date", DateTime.Now); 

    SqlParameter output = new SqlParameter("@ID", SqlDbType.Int); 
    output.Direction = ParameterDirection.Output; 

    cmd.Parameters.Add(output); 
    int idinserted = (int)cmd.ExecuteNonQuery(); 
    if (idinserted > 0) 
    { 
     int ID = output.Value; 
    } 

當我做插入和C#這樣與ExecuteScalar()

SQL INSERT 

@person bigint, 
@date datetime 
AS 
BEGIN 
    SET NOCOUNT ON; 

    INSERT INTO table(person ,DATE_ADDED) 
    VALUES(@person,@date) 

    SELECT SCOPE_IDENTITY() 

    cmd.Parameters.Clear(); 
    cmd.Parameters.AddWithValue("@person", person); 
    cmd.Parameters.AddWithValue("@date", DateTime.Now); 
    long ID = (long)cmd.ExecuteNonScalar(); 

ExecuteScalar()引發以下錯誤

「Specificed投它無效

+0

對不起,這不是剛剛檢查的問題。 – Jt2ouan 2013-05-02 20:53:38

+0

好的,但記錄已插入或沒有? – Steve 2013-05-02 20:57:29

回答

0

刪除

SET NOCOUNT ON; 

因爲這消除了行數!

+0

呃......那是問題所在。我花了很多時間查看拼寫和連接問題。 – Jt2ouan 2013-05-02 23:50:07

相關問題