存儲過程取余數
㈠ 在 sql select 語句中 如何獲取 存儲過程的返回值
SQL Server中存儲過程的返回值不是通過return語句返回的(return語句是在用戶自定義函數中使用的),而是通過存儲過程的參數來返回,在定義存儲過程的參數時使用關鍵字output來指定此參數是返回值。
而在調用存儲過程時,也必須使用關鍵字給接收返回值的變數,這樣才能在調用時獲得存儲過程的返回值。
示例:
createproceredbo.pr_add@aint,@bint,@cintoutput
as
set@c=@a+@b
go
調用:
declare@vint
executedbo.pr_add1,2,@voutput
select@v
㈡ SQL SERVER閲岄潰濡備綍鍦ㄥ瓨鍌ㄨ繃紼嬮噷闈㈣幏鍙栧彟涓涓瀛樺偍榪囩▼鎵榪斿洖鐨勮〃鐨勬暟鎹
棣栧厛闇瑕佺煡閬撯滃彟涓涓瀛樺偍榪囩▼鈥濈殑緇撴灉闆嗙殑鎵鏈夊垪鐨勭被鍨嬨
鍋囪鋸滃彟涓涓瀛樺偍榪囩▼鈥濈殑鍚嶅瓧鏄痵p1錛屾病鏈夊弬鏁幫紝榪斿洖鐨勭粨鏋滈泦鍏3鍒楋紝鍏ㄩ儴涓篿nt鍨嬶紝閭d箞鈥滃瓨鍌ㄨ繃紼嬧濋噷娣誨姞涓涓涓庣粨鏋滈泦鍒楁暟鐩稿悓鐨勪復鏃惰〃鎴栬〃鍙橀噺鐢ㄤ簬鎺ユ敹鈥滃彟涓涓瀛樺偍榪囩▼鈥濈殑緇撴灉闆
濡備笅
CREATE PROCEDURE sp2
AS
DECLARE @t table(a int,b int,c int)
INSERT INTO @t(a,b,c)
EXEC sp1
SELECT * FROM @t
浣跨敤SQLSERVER瀛樺偍榪囩▼鍙浠ュ緢澶х殑鎻愰珮紼嬪簭榪愯岄熷害錛岀畝鍖栫紪紼嬬淮鎶ら毦搴︼紝鐜板凡寰楀埌騫挎硾搴旂敤銆
鍒涘緩瀛樺偍榪囩▼
銆銆鍜屾暟鎹琛ㄤ竴鏍鳳紝鍦ㄤ嬌鐢ㄤ箣鍓嶉渶瑕佸壋寤哄瓨鍌ㄨ繃紼嬶紝瀹冪殑綆鏄庤娉曟槸錛
寮曠敤:
Create PROC 瀛樺偍榪囩▼鍚嶇О
[鍙傛暟鍒楄〃錛堝氫釜浠モ,鈥濆垎闅旓級]
AS
SQL 璇鍙
渚嬶細
寮曠敤:
Create PROC upGetUserName
@intUserId INT,
@ostrUserName NVARCHAR(20) OUTPUT -- 瑕佽緭鍑虹殑鍙傛暟
AS
BEGIN
-- 灝唘Name鐨勫艱祴緇 @ostrUserName 鍙橀噺錛屽嵆瑕佽緭鍑虹殑鍙傛暟
Select @ostrUserName=uName FROM uUser Where uId=@intUserId
END
銆銆鍏朵腑 Create PROC 璇鍙ワ紙瀹屾暣璇鍙ヤ負Create PROCEDURE錛夌殑鎰忔濆氨鏄鍛婅瘔SQL SERVER錛岀幇鍦ㄩ渶瑕佸緩絝嬩竴涓瀛樺偍榪囩▼錛寀pGetUserName 灝辨槸瀛樺偍榪囩▼鍚嶇О錛孈intUserId 鍜 @ostrUserName 鍒嗗埆鏄璇ュ瓨鍌ㄨ繃紼嬬殑涓や釜鍙傛暟錛屾敞鎰忥紝鍦⊿QL SERVER涓錛屾墍鏈夌敤鎴峰畾涔夌殑鍙橀噺閮戒互鈥淍鈥濆紑澶達紝OUTPUT鍏抽敭瀛楄〃紺鴻繖涓鍙傛暟鏄鐢ㄦ潵杈撳嚭鐨勶紝AS涔嬪悗灝辨槸瀛樺偍榪囩▼鍐呭逛簡銆傚彧瑕佸皢浠ヤ笂浠g爜鍦ㄢ滄煡璇㈠垎鏋愬櫒鈥濋噷鎵ц屼竴嬈★紝SQL SERVER灝變細鍦ㄥ綋鍓嶆暟鎹搴撲腑鍒涘緩涓涓鍚嶄負鈥渦pGetUserName鈥濈殑瀛樺偍榪囩▼銆備綘鍙浠ユ墦寮鈥滀紒涓氱$悊鍣ㄢ濓紝閫夋嫨褰撳墠鎿嶄綔鐨勬暟鎹搴擄紝鐒跺悗鍦ㄥ乏杈圭殑鏍戝瀷鍒楄〃涓閫夋嫨鈥滃瓨鍌ㄨ繃紼嬧濓紝姝ゆ椂灝卞彲浠ュ湪鍙寵竟鐨勫垪琛ㄤ腑鐪嬪埌浣犲垰鍒氬壋寤虹殑瀛樺偍榪囩▼浜嗭紙濡傛灉娌℃湁錛屽埛鏂頒竴涓嬪嵆鍙錛夈
浜屻佸瓨鍌ㄨ繃紼嬬殑璋冪敤
銆銆涔嬪墠宸茬粡鍒涘緩浜嗕竴涓鍚嶄負鈥渦pGetUserName鈥濈殑瀛樺偍榪囩▼錛屼粠瀛楅潰鐞嗚В璇ュ瓨鍌ㄨ繃紼嬬殑鍔熻兘鏄鐢ㄦ潵鍙栧緱鏌愪竴涓鐢ㄦ埛鐨勫悕縐般傚瓨鍌ㄨ繃紼嬪緩絝嬪ソ浜嗭紝鎺ヤ笅鏉ュ氨鏄瑕佸湪搴旂敤紼嬪簭閲岃皟鐢ㄤ簡錛屼笅闈㈢湅涓涓嬪湪ASP紼嬪簭閲岀殑璋冪敤銆
寮曠敤:
Dim adoComm
鈥// 鍒涘緩涓涓瀵硅薄錛屾垜浠鐢ㄦ潵璋冪敤瀛樺偍榪囩▼
Set adoComm = CreateObject("ADODB.Command")
With adoComm
鈥// 璁劇疆榪炴帴錛岃 adoConn 涓哄凡緇忚繛鎺ョ殑 ADODB.Connection 瀵硅薄
.ActiveConnection = adoConn
鈥// 綾誨瀷涓哄瓨鍌ㄨ繃紼嬶紝adCmdStoredProc = 4
.CommandType = 4
鈥// 瀛樺偍榪囩▼鍚嶇О
.CommandText = "upGetUserName"
鈥// 璁劇疆鐢ㄦ埛緙栧彿
.Parameters.Item("@intUserId").Value = 1
鈥// 鎵ц屽瓨鍌ㄨ繃紼
.Execute
鈥// 鍙栧緱浠庡瓨鍌ㄨ繃紼嬭繑鍥炵殑鐢ㄦ埛鍚嶇О
Response.Write "鐢ㄦ埛鍚嶏細" & .Parameters.Item("@ostrUserName").Value
End With
鈥// 閲婃斁瀵硅薄
Set adoComm = Nothing
銆銆閫氳繃浠ヤ笂涓ゆワ紝宸茬粡鍙浠ュ壋寤哄拰浣跨敤綆鍗曠殑瀛樺偍榪囩▼浜嗐備笅闈㈡潵鐪嬩竴涓紼嶅井澶嶆潅鐐圭殑瀛樺偍榪囩▼錛屼互榪涗竴姝ヤ簡瑙e瓨鍌ㄨ繃紼嬬殑搴旂敤銆
涓夈佸瓨鍌ㄨ繃紼嬬殑瀹為檯搴旂敤
銆銆鐢ㄦ埛鐧誨綍鍦ˋSP欏圭洰涓緇忓父浼氫嬌鐢ㄥ埌錛屼絾浣跨敤瀛樺偍榪囩▼鏉ュ仛楠岃瘉鍙鑳戒笉澶氾紝閭d箞鍋氫緥瀛愶紝鍐欎竴涓綆鍗曠殑鐢ㄦ埛鐧誨綍楠岃瘉鐨勫瓨鍌ㄨ繃紼嬨
寮曠敤:
Create PROC upUserLogin
@strLoginName NVARCHAR(20),
@strLoginPwd NVARCHAR(20),
@blnReturn BIT OUTPUT
AS
-- 瀹氫箟涓涓涓存椂鐢ㄦ潵淇濆瓨瀵嗙爜鐨勫彉閲
DECLARE @strPwd NVARCHAR(20)
BEGIN
-- 浠庤〃涓鏌ヨ㈠綋鍓嶇敤鎴風殑瀵嗙爜錛岃祴鍊肩粰 @strPwd 鍙橀噺錛屼笅闈㈣佸逛粬榪涜屾瘮杈
Select @strPwd=uLoginPwd FROM uUser Where uLoginName=@strLoginName
IF @strLoginPwd = @strPwd
BEGIN
SET @blnReturn = 1
-- 鏇存柊鐢ㄦ埛鏈鍚庣櫥褰曟椂闂
Update uUser SET uLastLogin=GETDATE() Where uLoginName=@strLoginName
END
ELSE
SET @blnReturn = 0
END
銆銆鐢ㄦ埛鐧誨綍鐨勫瓨鍌ㄨ繃紼嬪緩絝嬪ソ浜嗐傛敞鎰忥紝鍦ㄤ竴涓鍖哄煙鍐呭傛灉鏈夊氭潯璇鍙ユ椂錛屽繀闇浣跨敤BEGIN...END鍏抽敭瀛椼
寮曠敤:
Dim adoComm
鈥// 鍒涘緩涓涓瀵硅薄錛屾垜浠鐢ㄦ潵璋冪敤瀛樺偍榪囩▼
Set adoComm = CreateObject("ADODB.Command")
With adoComm
鈥// 璁劇疆榪炴帴錛岃 adoConn 涓哄凡緇忚繛鎺ョ殑 ADODB.Connection 瀵硅薄
.ActiveConnection = adoConn
鈥// 綾誨瀷涓哄瓨鍌ㄨ繃紼嬶紝adCmdStoredProc = 4
.CommandType = 4
鈥// 瀛樺偍榪囩▼鍚嶇О
.CommandText = "upUserLogin"
鈥// 璁劇疆鐧誨綍鍚嶇О
.Parameters.Item("@strLoginName").Value = "***"
鈥// 璁劇疆鐧誨綍瀵嗙爜
.Parameters.Item("@strLoginPwd").Value = "123456"
鈥// 鎵ц屽瓨鍌ㄨ繃紼
.Execute
鈥// 鍒ゆ柇鏄鍚︾櫥褰曟垚鍔
If .Parameters.Item("@blnReturn").Value = 1 Then
Response.Write "鎮鍠滀綘錛岀櫥褰曟垚鍔燂紒"
Else
Response.Write "涓嶆槸鍚э紝濂藉儚閿欎簡鍝︺傘傘"
End If
End With
鈥// 閲婃斁瀵硅薄
Set adoComm = Nothing
銆銆閫氳繃浠ヤ笂鐨勬ラわ紝綆鍗曠敤鎴風櫥褰曢獙璇佽繃紼嬩篃鍋氬畬浜嗭紝鐜板湪鍙瑕佹妸瀹冩暣鍚堝埌紼嬪簭涓灝卞彲浠ュ疄鐜扮畝鍗曠殑鐢ㄦ埛鐧誨綍楠岃瘉浜嗭紝鍏充簬鍏朵粬緇嗚妭灝辯敱浣犺嚜宸辨潵澶勭悊浜嗐
銆銆涓婇潰浠嬬粛鐨勪袱涓瀛樺偍榪囩▼閮芥槸鍙榪斿洖涓涓鍊肩殑錛屼笅闈㈡垜浠鏉ョ湅涓涓榪斿洖涓涓璁板綍闆嗙殑瀛樺偍榪囩▼銆
寮曠敤:
Create PROC upGetUserInfos
@intUserGroup INT
AS
BEGIN
-- 浠庢暟鎹搴撲腑鎶藉彇絎﹀悎鏉′歡鐨勬暟鎹
Select uName,uGroup,uLastLogin FROM uUser Where uGroup=@intUserGroup
-- 鎻掑叆涓鍒楀悎璁
UNION
Select 鈥欏悎璁′漢鏁:鈥,COUNT(uGroup),NULL FROM uUser Where uGroup=@intUserGroup
END
銆銆鐜板湪鎴戜滑鏉ョ湅涓涓婣SP紼嬪簭鐨勮皟鐢ㄣ
寮曠敤:
Dim adoComm
Dim adoRt
鈥// 鍒涘緩涓涓瀵硅薄錛屾垜浠鐢ㄦ潵璋冪敤瀛樺偍榪囩▼
Set adoComm = CreateObject("ADODB.Command")
Set adoRs = CreateObject("ADODB.Recordset")
With adoComm
鈥// 璁劇疆榪炴帴錛岃 adoConn 涓哄凡緇忚繛鎺ョ殑 ADODB.Connection 瀵硅薄
.ActiveConnection = adoConn
鈥// 綾誨瀷涓哄瓨鍌ㄨ繃紼嬶紝adCmdStoredProc = 4
.CommandType = 4
鈥// 瀛樺偍榪囩▼鍚嶇О
.CommandText = "upGetUserInfos"
鈥// 璁劇疆鐢ㄦ埛緇
.Parameters.Item("@intUserGroup").Value = 1
鈥// 鎵ц屽瓨鍌ㄨ繃紼嬶紝鍜屼互涓婂嚑涓渚嬪瓙涓嶅悓錛岃繖閲屼嬌鐢≧ecordSet鐨凮pen鏂規硶
adoRs.Open adoComm
鈥// 鏄劇ず絎涓涓鍊
Response.write adoRs.Fields(0).Value
End With
鈥// 閲婃斁瀵硅薄
Set adoRs = Nothing
Set adoComm = Nothing
㈢ 如何在PB腳本當中獲取存儲過程的返回值
沒有見過調用存儲過程象調用游標一樣的代碼,一般我是這樣聲明的:DECLARE Lproc_1 PROCEDURE FOR
proc_1 @as_int = :li_int OUTPUT ;
execute Lproc_cw_gz_personal_cal ;
變數li_int即為返回的值。如果要同時返回多行的數據,可以使用DATAWINDOW或者是DATASTORE來得到結果集:
string ls_sql_syntax , ls_syntax
string ls_error
integer li_ini
ls_sql_syntax = 'execute proc_1 "' + string ( li_ini ) + '"'
Datastore ldt_item
ldt_item = Create Datastore
ls_syntax = SQLCA.SyntaxFromSQL( ls_sql_syntax '', ls_error )
IF Len( ls_error ) > 0 THEN
MessageBox("提示信息", "創建數據存儲窗口語法出現錯誤!" + ls_error )
RETURN - 1
END IF
ldt_item .Create( ls_syntax, ls_error )
IF Len( ls_error ) > 0 THEN
MessageBox("提示信息", "創建數據存儲對象出現錯誤!" + ls_error )
RETURN - 1
END IF
ldt_item . Settransobject ( sqlca )
ldt_item . retrieve ( )
後面就神滑通常輪判的遍歷了!游桐臘
㈣ Oracle中怎樣用存儲過程將一段字元串以逗號為界截取,並將得到的子串存到另一張表中
㈤ c語言中怎樣取余數
很簡單,只需要一步,也就是只需要一張圖:C語言提供了一個取余數的運算符%,稱之為「模」運算符。只有兩個整數之間才可以進行模運算!a % b 表示 用b來整除a,商整數,得到余數。
如:5%3 = 2、4%3 =1、3%3 =0。
(5)存儲過程取余數擴展閱讀
C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
㈥ 取出exec後的返回值
完整使用exec利用存儲過程取出返回值,如
declare @num int, @sqls nvarchar(4000)
set @sqls='select @a=count(*) from alarm_Info '
exec sp_executesql @sqls,N'@a int output',@num output
print @num
㈦ SQL中存儲過程調用存儲過程,怎麼取返回值
存儲過程中的第一個參數 @title 將接收由調用程序指定的輸入值,而第二個參數 @ytd_sales 將向調用程序返回該值。SELECT 語句使用 @title 參數以獲得正確的 ytd_sales 值,並將該值賦予 @ytd_sales 輸出參數。
CREATE PROCEDURE get_sales_for_title
@title varchar(80), -- This is the input parameter.
@ytd_sales int OUTPUT -- This is the output parameter.
AS
-- Get the sales for the specified title and
-- assign it to the output parameter.
SELECT @ytd_sales = ytd_sales
FROM titles
WHERE title = @title
RETURN
GO