create or replace package welldailycross is
type ref_cursor is ref cursor; --建立带返回的游标
procedure prowelldailycross(startTime in varchar2,endTime in varchar2, orgid in varchar2,my_ref_cursor out ref_cursor);
end welldailycross;
create or replace package body welldailycross is
procedure prowelldailycross(startTime in varchar2,endTime in varchar2,orgid in varchar2,my_ref_cursor out ref_cursor) is
begin
DECLARE
flg NUMBER;
sqlstr1 varchar2(1000);--创建临时表
sqlstr2 varchar2(1000);--插入数据
sqlstr3 varchar2(1000);--查询临时表
usertotal varchar2(20); --用户得到和所有
datenow varchar2(20); ---时间
org_id VARCHAR2(10);--机构编号
orgname varchar2(20);--机构名称
cursor alldate is
Select Rownum,(to_date(startTime,'yyyy-mm-dd')+Rownum-1) times
from dual connect by rownum<= to_date(endTime,'yyyy-mm-dd')-to_date(startTime,'yyyy-mm-dd') +1;--查询开始时间和结束时间这间所有时间
curdate alldate%rowtype;
BEGIN
SELECT COUNT(*) INTO flg FROM User_Tables WHERE TABLE_NAME = 'TEMP_TAB2';
sqlstr1 := 'CREATE GLOBAL TEMPORARY TABLE TEMP_TAB2(
usertotal VARCHAR2(20),
datenow varchar2(20),
org_id varchar2(10),
orgname varchar2(20)
)
ON COMMIT delete ROWS';
IF flg = 0 THEN
execute immediate 'grant create table to omsdata';
execute immediate sqlstr1;
END IF;
open alldate;
loop
begin
fetch alldate into curdate;
exit when alldate%notfound;
select nvl(sum(x.oiltotal+y.otherstotal),0) as total,
x.nowtime as nowdate into usertotal,datenow
from
(select
nvl(sum(toi.scyyl1+toi.scyyl2),0) as oiltotal ,
to_char(curdate.times,'yyyy-mm-dd') as nowtime
from
tab_oil_info toi
where toi.org_id=orgid and toi.acq_date=to_char(curdate.times,'yyyy-mm-dd'))x,
(select
nvl(sum(tsu.tsyyl),0) as otherstotal
from
tab_spec_use tsu
where tsu.org_id=orgid
and tsu.acq_date =to_char(curdate.times,'yyyy-mm-dd'))y group by x.oiltotal,x.nowtime;
select toi.org_name into orgname from tab_org_info toi where toi.org_id=orgid;
sqlstr2 := 'insert into temp_tab2 values('''||usertotal||''','''||datenow||''','''||orgid||''','''||orgname||''')';
execute immediate sqlstr2;
end;
end loop;
sqlstr3 := 'select * from temp_tab2';
open my_ref_cursor for sqlstr3;
--loop
--begin
-- fetch my_ref_cursor into usertotal,datenow,org_id;
-- exit when my_ref_cursor%notfound;
-- dbms_output.put_line('日期'||datenow||'每天总收油量:'||usertotal||'每天用油总量'||org_id);
-- end;
-- end loop;
end;
end prowelldailycross;
end welldailycross;
分享到:
相关推荐
如果存储过程返回游标,我们需要声明一个`OUT`参数来接收。 4. **执行存储过程**:通过`pstmt.execute()`执行存储过程。这将打开一个游标,我们可以从游标中获取结果。 5. **处理游标结果**:使用`...
建立临时表** 临时表是在存储过程中创建的一种特殊类型的表,仅在当前会话中可见,并且会在存储过程执行结束后自动删除。例如,创建一个名为`TempTab`的临时表: ```sql BEGIN DECLARE LOCAL TEMPORARY TABLE ...
2. 创建一个临时表,让存储过程将结果写入临时表,然后在Java中通过查询临时表获取数据。 3. 如果可能,修改存储过程,使其返回XML或JSON格式的数据,然后在Java中解析这些格式的数据。 总的来说,调用Oracle存储...
STATIC 与 INSENSITIVE 含义相同,在系统 tempdb 数据库中创建临时表存储游标使用的数据,即游标不会随基本表内容而变化,同时也无法通过游标来更新基本表。 KEYSET 指定游标中列的顺序是固定的,并且在 tempdb 内...
vfp函数与命令大全.pdf Visual FoxPro 是一款功能强大且灵活的数据库管理系统,它...32. SQLCOLUMNS():把指定数据源表的列名和关于每列的信息存储到一个 VisualFoxPro 临时表中。 33. SQLCOMMIT():提交一个事务。
13. **从存储过程返回结果集(游标)的用法**:存储过程可以通过定义输出参数或返回一个游标来返回结果集。 14. **类型转换函数**:DB2提供了一系列类型转换函数,如`CAST`、`CONVERT`等,用于在不同数据类型之间进行...
5. 临时表和表变量的叙述错误:临时表的前缀是"#",表变量的前缀是"@" 6. 使用 ADO 连接数据库后,对数据库进行操作的一系列步骤中,不正确的是 fabcedg,因为正确的步骤应该是 acefdbg。 7. 能反映员工入职时间...
- **从存储过程返回结果集(游标)的用法**:使用`RETURN NEXT FROM cursor_name`。 - **类型转换函数**:如`CAST(column AS data_type)`进行类型转换。 - **存储过程的互相调用**:通过`CALL 存储过程名称`来调用其他...
15. **从存储过程返回结果集(游标)的用法:** 存储过程可以返回一个游标作为结果集,以便应用程序逐行处理数据。 16. **类型转换函数:** 常见的类型转换函数包括`CAST`和`CONVERT`,用于在不同类型之间转换数据。 ...
在存储过程中返回结果集通常涉及声明和打开游标,然后将其作为输出参数返回。例如: ```sql CREATE PROCEDURE MyProcedure (OUT cursor_result CURSOR FOR SELECT * FROM my_table) BEGIN DECLARE CONTINUE HANDLER...
B、C选项错误,新表不是临时表,可以进行增删改操作;D选项正确。 6. SQL Server的索引,A、B、C选项正确。聚集索引决定物理顺序,非聚集索引决定逻辑顺序;一个表仅能有一个聚集索引,但可以有多个非聚集索引;...
- **从存储过程返回结果集(游标)的用法**:通过定义游标并使用`FETCH`命令来逐行检索结果集。 - **类型转换函数**:如`CAST`和`CONVERT`等函数可用于类型转换。 - **存储过程的互相调用**:一个存储过程可以调用另一...
尽量避免使用游标,或者在必要时将数据转移到临时表,然后在临时表上操作。 7. **监控和调试**:使用`SET SHOWPLAN_ALL ON`来查看查询执行计划,了解查询如何运行并找出潜在的性能瓶颈。`DBCC`命令用于检查数据库的...
SQL Server提供了系统存储过程sys.sp_reset_connection,用来清理掉当前连接的上下文信息,如未提交的事务、可用的游标、临时表等,以避免后续使用同一个连接的用户受到之前连接上下文的影响。当调用Connection....
本文主要探讨DB2编程中的一些技巧,包括创建存储过程、使用临时表、获取指定数量的记录、游标的使用以及类似DECODE的操作。 首先,关于创建存储过程,DB2有特定的语法要求。在编写`CREATE PROCEDURE`语句时,务必...
外键则用于建立两张表之间的关联,通常是一个表的外键字段引用另一个表的主键字段,确保了数据之间的参照完整性。 11. 索引对在线事务处理(OLTP)表的影响 在OLTP表中,过度索引会增加数据更新、插入或删除操作的...
- **`INTO TEMP`**:用于将结果集存储到临时表中。 #### 三、`SELECT`语句的交互式形式 在DBACCESS等交互式环境中,`SELECT`语句的一般语法如下: ```sql SELECT [UNIQUE | DISTINCT | ALL] SelectList FROM ...