oracle的一些问题
好久时间没有用oracle,这次因为有个项目的需要,又重新温习了一下oracle。
我使用的oracle的版本是windows oracle 11g_R2.
首先先说一下安装。这个没有太大的问题,主要是安装的时候。有一个填写的地方。
在这里的时候会建立一个数据库。名称叫orcl。
创建服务端的监听程序。
使用
这个地方主要是服务端需要,就是服务端会在哪个端口来进行监听。这个最好是配制成ip地址+端口号。
这时候使用服务端sqlplus可以连接到数据库,如果外网连接不上,那可能是防火墙的问题,需要在防火墙中将oacle的tnslisterner.exe加入到防火墙的外网策略之中。
下面进行客户端的工作,客户端需要配置的是本地命名配置。
服务名填写oracle数据库名就行
下面使用navicat客户端进行链接。
需要配置oracle的dll
完成后没有问题。
建立函数,存储过程和定时器。
function:
CREATE OR REPLACE
FUNCTION wxSumFun (type_id IN NUMBER)
RETURN NUMBER
AS
sumwxnum NUMBER;
BEGIN
-- routine body goes here, e.g.
-- DBMS_OUTPUT.PUT_LINE('Navicat for Oracle');
select count(id) into sumwxnum from t_userbehavior t where t.USERTYPE =type_id and t.inserttime between to_date((select trunc(sysdate-1) from dual),'yyyy-mm-dd hh24:mi:ss') and to_date((select trunc(sysdate) from dual),'yyyy-mm-dd hh24:mi:ss');
RETURN sumwxnum;
END;
存储过程:
CREATE OR REPLACE
PROCEDURE "WXUSERPRO" AS
bandnum int;
focusnum int;
unbandnum int;
unfocusnum int;
addnum int;
increasenum int;
BEGIN
-- routine body goes here, e.g.
-- DBMS_OUTPUT.PUT_LINE('Navicat for Oracle');
SELECT WXSUMFUN(1) INTO bandnum FROM dual;
SELECT WXSUMFUN(2) INTO focusnum FROM dual;
SELECT WXSUMFUN(3) INTO unbandnum FROM dual;
SELECT WXSUMFUN(4) INTO unfocusnum FROM dual;
SELECT WXSUMFUN(5) INTO addnum FROM dual;
SELECT WXSUMFUN(6) INTO increasenum FROM dual;
INSERT into "t_userfocus"("id","counttime","userBandNum","userFocusNum","unuserBandNum","unuserFocusNum","userAddNum","userIncreaseNum") VALUES(SEQ_PRO_SUMWX.Nextval,(select to_char(sysdate-1,'yyyyMMdd') from dual),bandnum,focusnum,unbandnum,unfocusnum,addnum,increasenum);
END;
定时器:
在建立定时器的时候引用了存储过程,一直报这个错误:PLS-00201: 必须说明标识符 '......'
后来将存储过程改成大写,重新编译了一下,问题解决。
declare job7 NUMBER;
begin
sys.dbms_job.submit(job => job7,
what => 'WXUSERPRO;',
next_date => to_date('17-05-2014 01:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'TRUNC(SYSDATE+1)');
commit;
end;
删除job:
BEGIN
dbms_job.remove(4);
end;
其中remove的job就是下面的数字: