当前位置:首页 » 存储配置 » 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 11:02:40 浏览:376
怎么把苹果的号转到安卓手机上 发布:2025-04-05 10:39:05 浏览:531
存储核心架构瓶颈已被攻破 发布:2025-04-05 10:38:27 浏览:306
空间新算法 发布:2025-04-05 10:33:21 浏览:706
蜀门和远征哪个配置低 发布:2025-04-05 10:23:50 浏览:285
linux下jdk的安装 发布:2025-04-05 10:12:20 浏览:68
单机江湖脚本 发布:2025-04-05 10:08:32 浏览:766
爱奇艺离线缓存怎么传蓝牙 发布:2025-04-05 10:00:48 浏览:142
阿里云服务器内存超频 发布:2025-04-05 10:00:48 浏览:576
如何登录pubg国际服安卓手机 发布:2025-04-05 09:40:07 浏览:413