存储过程返回list
1. oracle存储过程返回参数是一个cursor,怎么转换为list
这里返回的是个结果集.rs.next返回的是一行数据.直接rs.getXXX方法获取.最好先声明一个对象来存放各个值,然后再赋给list.以便于使用.
2. 获取存储过程返回值
这个test(100,200)这个不对的吧,其中有一个是output的值,你这个都变成input了。
还有我估计参数2是输出参数,以为存储过程中需要把 输出的写在输入之后。
创建存储过程语法基本如下:
create or replace procere test1( 参数1 in varchar2(20),参数 2 out varchar2(20))
还有一种可能就是如果你这两个参数既能输入也能输出的话,是
create or replace procere test1( 参数1 in out varchar2(20),参数 2 in out varchar2(20))
这样就分不清楚哪个是输出了。
你是不是java程序组的,负责把BI组编的存储过程放进去?
这样需要多沟通了吧,我对java不是很了解,希望我说的sql方面的能帮到你。
3. 存储过程能不能返回一个值啊
存储过程有两种方式返回值:
第一:通过output 参数
第二:通过return来实现
而在你的存储过程已经声明了一个output参数,只要你在你的存储过程已经给这个值赋值了,它就能返回回去.
建议一般用output参数,因为它可以返回多个,而return只能是一个,return一般用来返回:影响的行数,错误编码等
简单例子:
DECLARE @tmpCount int
SET @tmpCount int = (SELECT COUNT(*) FROM 表名 WHERE 你要进行搜索的条件)
IF (@tmpCount = 0)
BEGIN
INSERT 操作
RETURN 1
END
ELSE
BEGIN
RETURN 0
END
4. Oracle中存储过程返回自定义的集合类型,Java中使用mybatis返回List集合类型
存储过程我不太熟,给你一个调用储存过程mybatis的实例参考:
<mappernamespace="entity.puserMapper">
<!--调用存储过程-->
<selectid="getCount"parameterMap="getUserCountMap"statementType="CALLABLE">
CALLmyts.ges_user_count(?,?)
</select>
<parameterMaptype="java.util.Map"id="getUserCountMap">
<parameterproperty="sexid"mode="IN"jdbcType="INTEGER"/>
<parameterproperty="usercount"mode="OUT"jdbcType="INTEGER"/>
</parameterMap>
</mapper>
主要是定义好parameterMap就行了
5. SQL 取存储过程的返回值
存储过程应该有返回值的,
问题应该出现在你vb6的调用语句中(第二个参数是输出类型的参数,
是否有正确设置).
你可以在查询分析器中执行此存储过程,
看看返回的结果.
还有,
此存储过程中的select语句最好加上top
1限制,
因为你只要判断是否能选到结果而已:
select
top
1
*
from
tb_package
where
packagenumber=@a
6. 如何用java调取带有列表返回值的存储过程
方式一:
简单的使用JDBC
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);
List list = new ArrayList();
try{
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL); //这里的SQL就是你的查询语句
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
while (rs.next()) {
Map map = new HashMap();
for (int i = 1; i <= columnCount; i++) {
map.put(md.getColumnName(i), rs.getObject(i));
}
list.add(map);
}
}catch(SQLException e)
{
e.printStackTrace();
}
return list;
我自己写的,不管什么SQL,都可以查询获取到一个list
7. 存储过程返回值
create procere InsertNull
@TableName varchar(50),
@Result int output
AS
declare @dtName varchar(1000)
set @dtName='insert into ' + @TableName +' default values'
exec(@dtName)
set @Result=SCOPE_IDENTITY()
select @Result As Result --注意,这里显示出来
go
然后exec insertnull ...参数
就相当于select Result
如果在程序里,执行这句之后,就能访问Result字段了
8. 在存储过程中使用存储过程的返回值
分成两步写吧.
先执行 exec A
就象你说的,可以用一个零时表,比如: biao 把A的结果放到BIAO中.
然后在写insert into newtable 是一下.
新建一张表,比如:biao
在存储过程A中,有向BIAO中插入数据的语句:即,insert into biao.....这样
在执行存储过程A的时候把数据已经插入到BIAO 中,在执行EXEC A后,表BIAO 中已经有了数据.这样,你做什么操作都可以了.是空值也没关系,除非你执行存储过程B中有不允许为空的字段.
9. sql server 存储过程如何返回一个集合啊
你需要的功能, 是不是 一个 叫做 “表值函数” 的东西?
SQLServer通过RETURNTABLE来实现。
1>CREATEFUNCTIONgetHelloWorld()
2>RETURNSTABLE
3>AS
4>RETURN
5>SELECT'Hello'ASA,'World'ASB;
6>GO
1>SELECT*FROMgetHelloWorld();
2>go
AB
----------
HelloWorld
(1行受影响)
如果返回的结果, 不是简单的一个 SQL 语句的, 而是比较复杂的业务逻辑的
CREATEFUNCTIONgetTestTable()
RETURNS@resultTABLE(Aint,Bint,Cint)
AS
BEGIN
INSERTINTO@resultVALUES(1,2,3);
INSERTINTO@resultVALUES(4,5,6);
INSERTINTO@resultVALUES(7,8,9);
RETURN;
END;SELECT*FROMgetTestTable();
A B C
1 2 3
4 5 6
7 8 9
10. 如何获取存储过程的返回值和输出值
没有见过调用存储过程象调用游标一样的代码,一般我是这样声明的: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