在这里插入代码片
CREATE OR REPLACE PROCEDURE PRO_UPDATECARDVIEW(STYPE VARCHAR2, EA_CO_NAME VARCHAR2)**AUTHID CURRENT_USER** IS
v_createsql varchar2(4000);
v_coname varchar2(4000);
BEGIN
v_coname:=EA_CO_NAME;
IF STYPE='L1'
THEN
IF v_coname='0'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE EA_EVENTNAME=''通行成功'' AND ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND EA_CO_NAME IN (''MB2F Hookup管制口'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
IF v_coname='1'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE EA_EVENTNAME=''通行成功'' AND ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND Substr( EA_CO_NAME,0,4) IN (''厂区西门'',''111A'',''111C'')
AND EA_PE_DE_NAME IS NOT NULL ';
END IF;
IF v_coname='2'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE EA_EVENTNAME=''通行成功'' AND ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND SUBSTR( EA_CO_NAME,0,7) IN (''TB1F-员工'',''TB1F-访客'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
IF v_coname='3'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,CASE WHEN EA_RE_NAME=''CUB1F-纯水站东门(中)'' THEN ''进''
WHEN EA_RE_NAME=''CUB1F-化学药剂间'' THEN ''出''
END EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND EA_RE_NAME IN (''CUB1F-纯水站东门(中)'',''CUB1F-化学药剂间'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
IF v_coname='4'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,CASE WHEN EA_RE_NAME=''106-1F南门'' THEN ''进''
WHEN EA_RE_NAME=''106-1F北门'' THEN ''出''
END EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND EA_RE_NAME IN (''106-1F南门'',''106-1F北门'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
IF v_coname='5'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,CASE WHEN EA_RE_NAME=''103栋设备平台二入口'' THEN ''进''
WHEN EA_RE_NAME=''103-2#楼梯入口'' THEN ''出''
END EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND EA_RE_NAME IN (''103栋设备平台二入口'',''103-2#楼梯入口'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
IF v_coname='6'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,CASE WHEN EA_RE_NAME=''107-东北门'' THEN ''进''
WHEN EA_RE_NAME=''107-东南门'' THEN ''出''
END EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND EA_RE_NAME IN (''107-东北门'',''107-东南门'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
IF v_coname='7'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,CASE WHEN EA_RE_NAME=''108-1F-风机房'' THEN ''进''
WHEN EA_RE_NAME=''108-1F-东大门'' THEN ''出''
END EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND EA_RE_NAME IN (''108-1F-风机房'',''108-1F-东大门'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
IF v_coname='8'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,CASE WHEN EA_RE_NAME=''116A-103西门'' THEN ''进''
WHEN EA_RE_NAME=''116A-102西门'' THEN ''出''
END EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND EA_RE_NAME IN (''116A-103西门'',''116A-102西门'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
IF v_coname='9'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,CASE WHEN EA_RE_NAME=''116B-103北门'' THEN ''进''
WHEN EA_RE_NAME=''116B-102北门'' THEN ''出''
END EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND EA_RE_NAME IN (''116B-103北门'',''116B-102北门'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
IF v_coname='10'
THEN
v_createsql:='CREATE OR REPLACE VIEW V_CARD_SWIPE_DATA AS
SELECT
ea_msgtime
,ea_insertdatetime
,EA_PE_FIRSTNAME
,EA_PE_CODE
,EA_CO_NAME
,EA_IB_NAME
,CASE WHEN EA_RE_NAME=''116C-102北门2'' THEN ''进''
WHEN EA_RE_NAME=''116C-101北门'' THEN ''出''
END EA_RE_NAME
,EA_PE_DE_NAME
,to_char(ea_msgtime,''hh24'') AS hours
from AIC_Access_EventMessageDataAccess@DATABASE_STDBP
WHERE ea_msgtime>=to_timestamp(''2019-07-01 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
AND EA_RE_NAME IN (''116C-102北门2'',''116C-101北门'')
AND EA_PE_DE_NAME IS NOT NULL';
END IF;
dbms_output.put_line(v_createsql);
execute immediate v_createsql ;
END IF;
END PRO_UPDATECARDVIEW;`
ORACLE创建存储过程,存储过程中使用execute immediate 执行sql语句时,报权限不足,此时需要修改存储过程,添加AUTHID CURRENT_USER,重新创建存储过程即可。