存儲過程返回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