存儲過程返
㈠ 調用存儲過程返回什麼類型
隨便,自定義out變數。可以是任何數據類型。
㈡ sql存儲過程返值:return 3是對應哪個
return 3 表示 「借書失敗」。 借閱號是每次取最大值,然後加1,這個欄位應該是唯一的,大概是主鍵或唯一鍵。當多人同時操作時,可能發生並發錯誤,並返回3。
USE 圖書借閱管理
GO
CREATE PROC 借書過程
@借書證號 char(5),@圖書名稱 varchar(40),@作者 varchar(20)
AS
DECLARE @借閱號 int,@圖書編號 varchar(6)
IF EXISTS (SELECT * FROM 圖書信息
WHERE 圖書名稱=@圖書名稱 and 作者=@作者 and 狀態=0)
BEGIN
BEGIN TRANSACTION
SELECT @圖書編號=圖書編號 FROM 圖書信息
WHERE 圖書名稱=@圖書名稱 and 作者=@作者 and 狀態=0
UPDATE 圖書信息
SET 狀態=1
WHERE 圖書編號=@圖書編號
IF @@error!=0
BEGIN
ROLLBACK TRANSACTION
PRINT '更新圖書信息表失敗。'
RETURN 1
END
SELECT @借閱號=借閱號
FROM 租借信息 ORDER BY 借閱號
IF @借閱號 is null
SET @借閱號=0
INSERT 租借信息(借閱號,借書證號,圖書編號,借書日期) VALUES (@借閱號+1,@借書證號,@圖書編號,getdate())
IF @@error!=0 ----------------
BEGIN --------------
ROLLBACK TRANSACTION -------------
PRINT '借書失敗。' ------------------ 3
RETURN 3 ----------------------
END ----------------------------------
UPDATE 學生信息
SET 借書冊數=借書冊數+1
WHERE 借書證號=@借書證號
IF @@error!=0
BEGIN
ROLLBACK TRANSACTION
PRINT '更新學生信息失敗。'
RETURN 4
END
COMMIT TRANSACTION
PRINT '恭喜您借書成功!圖書編號是:'+@圖書編號
RETURN 0
END
ELSE
BEGIN
PRINT '圖書已經借出或沒有。'
RETURN 2
END
㈢ 為什麼存儲過程總返回
你是用ExecuteNonQuery進行「添加」操作的把?
ExecuteNonQuery 不返回任何行數據,但映射到參數的任何輸出參數或返回值都會用數據進行填充。
對於查詢更新刪除操作UPDATE、INSERT 和DELETE 語句,返回值為該命令所影響的行數。
對於所有其他類型的語句,返回值為-1。如果發生回滾,返回值也為-1
如果執行了存儲過程,返回值必定是-1 , 因此不能根據返回值來判斷其是否執行成功。
㈣ 存儲過程返回指定的欄位
如果是oracle或者db2之類的,可以先通過sequnce獲取id,再做保存,如果是SQL Server,可以用:IDENT_CURRENT 返回為任何會話和任何作用域中的特定表最後生成的標識值。IDENT_CURRENT 不受作用域和會話的限制,而受限於指定的表。IDENT_CURRENT 返回為任何會話和作用域中的特定表所生成的值。
@@IDENTITY 返回為當前會話的所有作用域中的任何錶最後生成的標識值。
SCOPE_IDENTITY 返回為當前會話和當前作用域中的任何錶最後生成的標識值
SCOPE_IDENTITY 和 @@IDENTITY 返回在當前會話中的任何錶內所生成的最後一個標識值。但是,SCOPE_IDENTITY 只返回插入到當前作用域中的值;@@IDENTITY 不受限於特定的作用域。
或者根據表的唯一條件查找出來。
我個人一般不建議在SQL Server裡面用自動增長的id
㈤ 如何獲取存儲過程返回值
樓主會在c#中使用存儲過程嗎?
如果會的話,sql執行函數賦值給一個變數就可以了
sqlconnection
cnn
=
new
sqlconnection();
cnn.connectionstring
=
"data
source
=
數據源;uid=sa;pwd
=
;database=資料庫名";
cnn.open();//資料庫連接
//設置存儲過程參數
sqlparameter
prm;
sqlcommand
cmd
=
new
sqlcommand();
cmd.connection
=
cnn;
cmd.commandtype
=
commandtype.storedprocere;
cmd.commandtext
=
"存儲過程名";
//項目類型
prm
=
new
sqlparameter();
prm.parametername
=
"參數名1";
prm.sqldbtype
=
sqldbtype.varchar;
prm.size
=
50;
prm.value
=
combobox1.text;
prm.direction
=
parameterdirection.input;
cmd.parameters.add(prm);
...
//可以繼續設置參數,參數個數由存儲過程的具體內容決定
cmd.executenonquery();//執行存儲過程
實際上如果要獲取存儲過程的返回值,只要將上面一句代碼修改成:
int
retn
=
cmd.executenonquery();
就可以了
㈥ 怎樣讓SqlServer的存儲過程返回結果集
1、返回結果集
這是客戶端應用程序返回結果的最通用的方法。結果集是通過使用SELECT語句選擇數據產生的。結果集可以從永久表、臨時表或局部變數中產生。將結果返回到另一個存儲過程不是一種有效的方法。存儲過程不能訪問另一個存儲過程建立的結果集。
例如從永久表中返回結果集:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromPermtable
AS
SELECT au_iname FROM authors
例如從局部變數中創建結果集:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromVariable
AS
DECLARE @au_iname char(20)
SELECT @au_iname = au_iname FROM authors
WHERE au_id = 『172-32-1176』
SELECT @au_id
GO
㈦ sqlserver2005 存儲過程返回值的問題
返回結果的方式有很多我說兩種,一種是利用存儲過程的參數可以把存儲過程的結果返回,另外一種是在外部接收存儲過程內部return出來的結果。當然啦,還可以在存儲過程內部select要返回的結果。
比如:
createproctest
@p_errormsgvarchar(80)=''out
as
select@p_errormsg='測試'
return-100
go
--------------------------------------------------------------
declare@errorcodeint
declare@errormsgvarchar(80)
exec@errorcode=test@errormsgout
select@errorcodeaserrorcode,@errormsgaserrormsg
--@errorcode是return出來的結果@errormsg是輸出參數@p_errormsg的執行結果
㈧ SQL存儲過程帶返回
你這個存儲過程,這樣直接返回字元串,是不行的。存儲過程直接返回,只能返回int類型的數據,或者是int類型的字元串。
你需要為你的存儲過程定義一個輸出參數。然後在調用時,接收這個輸出參數。
㈨ SQL 取存儲過程的返回值
你這個
存儲過程
,這樣直接返回字元串,是不行的。存儲過程直接返回,只能返回int類型的數據,或者是int類型的字元串。
你需要為你的存儲過程定義一個輸出參數。然後在調用時,接收這個輸出參數。