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投它無效
對不起,這不是剛剛檢查的問題。 – Jt2ouan 2013-05-02 20:53:38
好的,但記錄已插入或沒有? – Steve 2013-05-02 20:57:29