關於 預存程序傳回值

來源:互聯網
上載者:User
有一個表,其主鍵是int並且為自動成長的。當我向這個表中插入一項並且不提供主鍵的時候,資料庫會自動添加一個唯一的主鍵。

問題是:
怎麼得到剛剛插入的那一項的主索引值?
1、
預存程序有兩種方式傳回值:
第一:通過output 參數
第二:通過return來實現

而在你的預存程序已經聲明了一個output參數,只要你在你的預存程序已經給這個值賦值了,它就能返回回去.

建議一般用output參數,因為它可以返回多個,而return只能是一個,return一般用來返回:影響的行數,錯誤編碼等
2、
為避免多使用者操作資料庫取值不正確
正確應該要這樣取:
SELECT * FROM table WHERE (AutoIncreaseColumn = SCOPE_IDENTITY())
3、
SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它們都返回插入到 IDENTITY 列中的值。

IDENT_CURRENT 返回為任何會話和任何範圍中的特定表最後產生的標識值。IDENT_CURRENT 不受範圍和會話的限制,而受限於指定的表。IDENT_CURRENT 返回為任何會話和範圍中的特定表所產生的值。
@@IDENTITY 返回為當前會話的所有範圍中的任何錶最後產生的標識值。
SCOPE_IDENTITY 返回為當前會話和當前範圍中的任何錶最後產生的標識值

SCOPE_IDENTITY 和 @@IDENTITY 返回在當前會話中的任何錶內所產生的最後一個標識值。但是,SCOPE_IDENTITY 只返回插入到當前範圍中的值;@@IDENTITY 不受限於特定的範圍。
IDENT_CURRENT()  始終返回指定表最後插入的標識值
@@IDENTITY       返回當前會話的標識值,無論是否在同一個範圍,在測試1、2中,可以看到它返回的是觸發器中插入記錄的標識值,而在測試3中,因為當前會話無插入記錄,所以返回NULL
SCOPE_IDENTITY() 返回當前會話同一範圍的標識值,所以在測試1、2中,它返回的值不受觸發器的影響,而在測試3中,因為當前會話無插入記錄,所以返回NULL
4、
插入之後馬上 select @@identity from youetable 即可
如果是預存程序可以把@@identity作為插入之後的傳回值

5、
在查詢分析器中擷取預存程序中的return的值
declare @return_value int
set @return_value = 1
exec EXT_SUBJECTINSERT_11
 "2006","艱難", "高中",
  "語文","問答","知識點","第一期","dd","2006-9-11 8:32:54","重文",
   "insert",1,1,
  "search","dd","fir",@return_value output
select @return_value

6、
DECLARE @tmpCount int
SET @tmpCount int = (SELECT COUNT(*) FROM 表名 WHERE 你要進行搜尋的條件)

IF (@tmpCount = 0)
BEGIN
    INSERT 操作
    RETURN 1
END
ELSE
BEGIN
    RETURN 0
END

預存程序來作,預存程序的寫法可以參照上面給出的,但是在程式調用的話就需要使用sqlparameter了,關於它的使用方法,可以在網上找到一堆
  然後執行sqlcommand,如果僅僅在程式定義了一個傳回值參數(returnvalue)那麼執行完(excutenoquery)可以由這個參數來判斷,如果在資料庫和程式中定義了一個傳回值參數(output),那麼執行完後也可以由這個參數的值進行判斷
7、
用int returnValue = Convert.ToInt32(command.ExecuteScalar());執行sql語句,取得傳回值
8、
cmd.Parameters["return_value"].Direction=ParameterDirection.ReturnValue;

本文為轉載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.