當前位置:首頁 » 存儲配置 » sql存儲過程output

sql存儲過程output

發布時間: 2022-09-26 05:39:00

sql存儲過程,output出來的參數 返回null

select @totalMoney =2 沒有問題

select @totalMoney = SUM([count]*UnitPrice) from Cart inner join Books on Cart.BookId=Books.Id where Cart.UserId=@userId
那就是這條語句的條件有問題,改成
select @totalMoney = isnull(SUM([count]*UnitPrice),0) from Cart inner join Books on Cart.BookId=Books.Id where Cart.UserId=@userId

② sqlserver中存儲過程的參數可以有out和output,他們有什麼區別

沒有OUT這個參數,只有OUTPUT參數,就是需要反正一個值。

③ sql存儲過程中的output的作用是什麼

output的參數是輸出參數,執行完了存儲過程之後,這個參數的值會發生變化

不能理解為return,如果要類比,你可以理解為ref或者Out

④ SQL 中創建存儲過程

你把那個創建存儲過程的查詢語句運行一下
資料庫里就會按照你的語句建立存儲過程了
建立好後你寫的那個創建存儲過程的語句就沒用了
下次直接就可以調用創建好的存儲過程
有output參數的存儲過程可以通過定義變數來傳入參數啊,比如這樣
--創建存儲過程
create
procere
Test
@i
int
output
as
set
@i
=
@i
*
2
--定義一個變數
declare
@i
int
--賦值10
set
@i
=
10
--列印輸出
print
@i
--調用存儲過程,使變數@i乘以2
Test
@i
output
--列印輸出
print
@i

⑤ 在SQL2000中如何執行 帶有output參數的存儲過程

例子如下:

1> CREATE PROCEDURE HelloWorld2
2> @UserName VARCHAR(10),
3> @OutVal VARCHAR(10) OUTPUT,
4> @InoutVal VARCHAR(10) OUTPUT
5> AS
6> BEGIN
7> PRINT 'Hello ' + @UserName + @InoutVal + '!';
8> SET @OutVal = 'A';
9> SET @InoutVal = 'B';
10> END;
11> go

1>
2> DECLARE @RC int, @OutVal VARCHAR(10), @InoutVal VARCHAR(10);
3> BEGIN
4> SET @InoutVal = '~Hi~';
5> EXECUTE @RC = HelloWorld2 'Edward', @OutVal OUTPUT, @InoutVal OUTPUT;
6> PRINT @RC;
7> PRINT '@OutVal=' + @OutVal;
8> PRINT '@InoutVal=' + @InoutVal;
9> END
10> go
Hello Edward~Hi~!
0
@OutVal=A
@InoutVal=B

⑥ SQL中存儲過程out與output有什麼不同,感覺它倆是同一個意思,一樣的用法,都是用於輸出。求

你好題主,剛好最近我也在學習SQL,不過我在學習的是Oracle,

MSSQL和Oracle倒是有很多不同的地方。

所以我特意打開MSSQL的服務,在MSSQL里寫了這么一個腳本,希望能幫助到你。

因為本人是做.Net方向的開發者,所以用了C#語言中

以下是腳本內容:

--SQLQueryCreateByFaywool
createprocProc_OutPutTest--創建
@numAint,--numA為存儲過程的參數
@numBint,--numB為另一參數
@numReturnintoutput--此為Output,也就是存儲過程的返回值
as
begin
if(@numA>@numB)
set@numReturn=@numA
else
set@numReturn=@numB--A>B的時候返回A,否則返回B
end

go


declare@numReceiveint--先聲明一個變數用來接收存儲過程的返回值
execProc_OutPutTest1,2,@numReceiveoutput
--調用存儲過程並用@numReturn接收存儲過程的返回值
select@numReceive--將會返回(1,2)中較大的數字:2

go

createprocProc_OutTest--新建存儲過程
@numCint,--參數C
@numDint,--參數D
@numEintout--參數E用來返回
as
begin
if(@numC>@numD)
set@numE=@numC--如果C>D,將C賦值給E
else
set@numE=@numD--否則將D賦值給E
end

go


declare@numOutReceiveint--聲明一個變數
set@numOutReceive=10000--將變數賦值為10000
select@numOutReceive--變數變為10000
execProc_OutTest1,2,@numOutReceiveout--將(1,2,@numOutReceive)三個數字傳入存儲過程
select@numOutReceive--再看變數就變成2了
--總結:

--Out是參數,傳進、傳出,缺一不可,在存儲過程定義的時候一定要有out標識,
--在調用該存儲過程的時候也要有out標識


--OutPut則是相當於存儲過程的返回值
--不用傳進,也不能傳進
--它是在存儲過程中定義,並且輸出的

--一句話:Out相當於C#中的ref參數(傳進、傳出缺一不可),而且傳進傳出的時候都要標識為ref
--OutPut則為C#中的方法返回值類型,在方法定義時就已經定好了

⑦ delphi 如何接住sql 存儲過程output傳下來的參數

譬如這樣一個存儲過程
create procere proc_inserttea(@i int output,@id char(10),@name char(10),@title char(20),@grade char(5))
as
insert into teacher(Tid,Tname,title,Tgrade) values(@id,@name,@title,@grade)
select @i=id from teacher where Tid=@id
傳出id這個參數,用ADOStoredProc去接收
storeproc.ProcereName:='proc_inserttea';
storeproc.Parameters.CreateParameter('i',ftInteger,pdOutput,0,null);
storeproc.Parameters.CreateParameter('id',ftString,pdInput,10,Edit6.Text);
storeproc.Parameters.CreateParameter('name',ftString,pdInput,10,Edit7.Text);
storeproc.Parameters.CreateParameter('title',ftString,pdInput,20,Edit8.Text);
storeproc.Parameters.CreateParameter('grade',ftString,pdInput,10,Edit9.Text);
storeproc.ExecProc;
TeaId:=storeproc.Parameters.ParamByName('i').Value;
這是一種方法

⑧ sql存儲過程中的output的作用是什麼

output的
參數
是輸出參數,執行完了
存儲過程
之後,這個參數的值會發生變化
不能理解為return,如果要類比,你可以理解為ref或者Out

⑨ sql server存儲過程的游標output後 java怎麼接受它oracle返回的rs我會接受

1.存儲過程中我定義了一個游標返回值

@CURSOR_subsidiaryaccounts CURSOR VARYING OUTPUT -- 返回明細賬的游標

ALTER PROCEDURE [dbo].[p_ledger_subsidiaryaccounts]
@fyearGe int, --年
@fperiodGe int, --期
@fyearLe int, --年
@fperiodLe int, --期
@fposted int, --是否過賬 1,表示包含未過賬;0,表示不包含未過賬數據
@facctId bigint, --科目ID
@fdetailId bigint, --核算項目ID
@CURSOR_subsidiaryaccounts CURSOR VARYING OUTPUT -- 返回明細賬的游標
AS
BEGIN
SET NOCOUNT ON;
/*創建臨時表*/

....

--1.對返回的游標進行數據的綁定
SET @CURSOR_subsidiaryaccounts = CURSOR
FORWARD_ONLY STATIC
FOR
SELECT ID,
FDate,
FYear,
FPeriod,
FVoucherId,
FNumber,
FExplanation,
Fdebit,
Fcridt,
Fdc,
Fendbalance
FROM #tmp
Order By ID asc,FYear,Fperiod
-- 2. 打開游標
OPEN @CURSOR_subsidiaryaccounts
END

2.我在JAVA代碼中用JDBC模版執行這個存儲過程,要注冊個游標類型的返回值。
SQL Server的JDBC貌似不支持??不知道怎麼解決呢?java代碼如下:

public List<Map> listSubsidiary(final int fyearGe,final int fperiodGe,final int fyearLe,
final int fperiodLe,final Long facctId,final Long fdetailId,final int fposted) {

return (List<Map>) this.jdbcTemplate.execute(new CallableStatementCreator() {

@Override
public CallableStatement createCallableStatement(Connection conn) throws SQLException {
String sql = "{call p_ledger_subsidiaryaccounts(?,?,?,?,?,?,?,?)}";
CallableStatement cs = conn.prepareCall(sql);
cs.setInt(1, fyearGe);
cs.setInt(2, fperiodGe);
cs.setInt(3, fyearLe);
cs.setInt(4, fperiodLe);
cs.setInt(5, fposted);
cs.setLong(6, facctId);
cs.setLong(7, fdetailId);
//cs.registerOutParameter(8, java.sql.Types.OTHER);
cs.registerOutParameter(8, -10);
return cs;
}

},new CallableStatementCallback() {

@Override
public Object doInCallableStatement(CallableStatement cs)
throws SQLException, DataAccessException {
cs.execute();
ResultSet rs = (ResultSet)cs.getObject(8);
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
while(rs.next()){
System.out.println(rs.getString("FNumber"));
}
return list;
}
});
}<span></span>

⑩ sql存儲過程是什麼

sql存儲過程說簡單點就是一個在t-sql下用戶可以自行定義的函數,
但是與一般的函數也有不同的地方,比如它的返回值只能RETURN(INT類型),如果你要輸出什麼信息的話只能用OUTPUT.這也是存儲過程的一個特色吧,設定的參數可以有輸出。講起來有點抽象,給你個例子看看吧!
首先創建一個存儲過程
CREATE
PROCEDURE
cunchuguocheng
@a
int,
@b
int,
@c
int
output
as
begin
select
@c
=
@a+@b
return(0)
end
然後調用這個存儲過程
declare
@value
int,
--返回值
@c
int
--結果值
exec
@value
=
cunchuguocheng
2,2,@c
output
select
@value
as
返回值
select
@c
as
結果值
程序寫的很簡單,你運行一下我想你就會對存儲過程有所了解了。

熱點內容
日本免費雲伺服器色 發布:2025-04-05 04:58:52 瀏覽:864
linuxcpp 發布:2025-04-05 04:53:38 瀏覽:747
安卓字體哪個最好 發布:2025-04-05 04:46:37 瀏覽:649
什麼是hdb3碼編解碼 發布:2025-04-05 04:40:20 瀏覽:504
編譯原理運算符 發布:2025-04-05 04:37:50 瀏覽:520
如何用安卓手機玩ipad的賬號 發布:2025-04-05 04:17:42 瀏覽:935
vivo手機怎麼在桌面建文件夾 發布:2025-04-05 04:15:56 瀏覽:961
在線ftp網頁版軟體 發布:2025-04-05 04:15:02 瀏覽:624
android手機gps 發布:2025-04-05 04:14:59 瀏覽:446
頁數演算法 發布:2025-04-05 03:19:01 瀏覽:318