lz是在哪里执行的,命令窗口,还是window窗口
解决方案 »
- linux系统下oracle用dbca创建数据库最后点击ok没反应
- 求问oracle用户ssh权限不足 linux5.4
- 请教:expected number got - 是什么意思
- oracle FORM的数据块问题
- 100分求一存储过程
- 各位大哥:怎样用命令删除表空间某用户的所有表
- 在模糊查询中,如果字段是字符型的,用select * from 表1 where nvl(zd1,' ') like '%%'显示的是全部记录,包括zd1的值为空的,但如果zd1是da
- 请问有两个BETWEEN的SELECT生成的表,参否并在一张表里显示(高手请进,在线等待)
- oracle有关问题
- 关于倒转表的查询,如何写这样的sql语句?请高手帮忙!
- 写个存储过程,不知道怎么写
- 谁能帮我写一个简单的存储过程~~就是两个表的连接~~
应该算是WINDOWS窗口吧?我用了一个SQL Tools1.5的工具,不知道你用过没有。
ETime:=To_Char(Trunc(SYSDATE+1/24,'HH24'),'YYYY-MM-DD HH24:MI:SS');
是不能这么写的,
可改为:select To_Char(Trunc(SYSDATE,'HH24'),'YYYY-MM-DD HH24:MI:SS') into BTime from dual;
select To_Char(Trunc(SYSDATE+1/24,'HH24'),'YYYY-MM-DD HH24:MI:SS') into ETimefrom dual;
--你写的
sqlstr;=select col1,col2,col3 into var1,var2,var3 from table
EXECUTE IMMEDIATE sqlstr;
--修改为
sqlstr;=select col1,col2,col3 from table
EXECUTE IMMEDIATE sqlstr into var1,var2,var3;
1.动态SQL不能用into
2.你的SQL拼接也有错,帮你改了一下能够实现你想的功能,你需要仔细看看(特别注意动态SQL是怎么改的):CREATE OR REPLACE PROCEDURE test(table_name IN VARCHAR2,
cjsj IN DATE,
zryl IN NUMBER,
jkgd IN NUMBER,
zqwd IN NUMBER,
zqsd IN NUMBER) AS
lzryl NUMBER(10);
ljkgd NUMBER(10);
lzqwd NUMBER(10);
lzqsd NUMBER(10);
BTime VARCHAR2(20);
ETime VARCHAR2(20);
sqlstr VARCHAR2(1000);
sqlAll VARCHAR2(1000);
type c_type is ref cursor;
c1 c_type;
BEGIN
BTime := To_Char(Trunc(SYSDATE, 'HH24'), 'YYYY-MM-DD HH24:MI:SS');
ETime := To_Char(Trunc(SYSDATE + 1 / 24, 'HH24'),
'YYYY-MM-DD HH24:MI:SS');
sqlstr := 'SELECT Nvl(Avg(' || zryl || '),' || To_Char(zryl) ||
'),Nvl(Avg(' || jkgd || '),' || To_Char(jkgd) || '),Nvl(Avg(' || zqwd || '),' ||
To_Char(zqwd) || '),Nvl(Avg(' || zqsd || '),' || To_Char(zqsd) ||
') FROM ' || table_name || ' WHERE to_date(' ||
to_char(cjsj, 'yyyymmdd') ||
',''yyyymmdd'') BETWEEN To_Date(''' || BTime ||
''',''YYYY-MM-DD HH24:MI:SS'') AND To_Date(''' || ETime ||
''',''YYYY-MM-DD HH24:MI:SS'')';
dbms_output.put_line(sqlstr);
open c1 for sqlstr;
loop
fetch c1
into lzryl, ljkgd, lzqwd, lzqsd;
exit when c1%notfound;
dbms_output.put_line(lzryl);
dbms_output.put_line(ljkgd);
end loop;
close c1;
END;
/
set serverout on;
EXECUTE test('dual',SYSDATE,0,0,0,0) ;