oracle资料库
shell脚本命令
MySQL资料
Linux 安装mariadb
MySQL安装部署四种安装方式
Linux操作系统彻底删除MySQL——详细步骤
windows 下安装Mysql
MySQL常用命令
sqlite
Oracle
运行情况查询汇总
通过命令行导出AWR报告
alert日志存放位置
归档日志查看与清理
oracle数据库体系结构
SPFILE的搜索顺序
备份还原
RMAN备份
数据泵备份
EXP/IMP
数据库自动任务
oracle部署安装
Linux下安装oracle11G
windows下安装数据库
数据库维护篇
SGA/PGA修改
单独BUG参数修改
常用参数修改命令
数据库异常情况典型
用户密码管理
TNS详解及常见错误码
SQL语句
练习题
练习二
oracle 数据库去重复
多行字段拼接成一列 (listagg函数)
判断是否为数字
数据库空间管理
lob字段压缩
碎片整理
临时表空间
临时表空间管理
Oracle服务脱机迁移手册
windows 磁盘空间不足 转移数据文件
常用函数
发现患者是否有特殊字符
获取汉字首拼
通过关键词截取病历数据
转入转出文书记录获取数据
blob转varchar
触发器
阻断休眠
性别被置空
姓名无故更新
健康检测脚本
数据闪回
Redis
Redis可视化工具
Toad使用技巧
本文档使用 MrDoc 发布
-
+
首页
发现患者是否有特殊字符
```sql CREATE OR REPLACE PROCEDURE PRO_JH_FINDSTRING(strPatientID in varchar2, strVisitID in varchar2) Authid Current_User IS v_table_name varchar2(128); v_cloumn_name varchar2(128); v_data VARCHAR2(500); --存储临时数据 v_found int; --发现特殊字符为1 v_found_mark varchar2(20); v_sql varchar2(2000); v_data_type varchar2(100); -- ~!@#$%^&*()_+|}{":?><,./';[]\=- cur_data SYS_REFCURSOR; begin v_sql := ' SELECT A.TABLE_NAME, A.COLUMN_NAME, A.data_type from DBA_TAB_COLUMNS A, DBA_TABLES B WHERE A.TABLE_NAME = B.TABLE_NAME ' || ' AND A.OWNER = B.OWNER and a.DATA_TYPE in(''VARCHAR2'',''NVARCHAR2'') ' || ' and A.TABLE_NAME IN (''PAT_VISIT'',''PAT_MASTER_INDEX'',''PATS_IN_HOSPITAL'',''JHINPAT_MR_ON_LINE'') '; open cur_data for v_sql; loop v_found := '0'; fetch cur_data into v_table_name, v_cloumn_name, v_data_type; exit when cur_data%notfound; if (v_table_name = 'PAT_MASTER_INDEX') then v_sql := 'select ' || v_cloumn_name || ' from ' || v_table_name || ' where PATIENT_ID= ' || '''' || strPatientID || ''''; else v_sql := 'select ' || v_cloumn_name || ' from ' || v_table_name || ' where PATIENT_ID= ' || '''' || strPatientID || '''' || ' and visit_id=' || strVisitID || ' and rownum=1'; end if; --dbms_output.put_line(v_sql); execute immediate v_sql into v_data; if (instr(v_data, '~') > 0) then v_found := 1; v_found_mark := '特殊字符~'; ELSIF (instr(v_data, '!') > 0) then v_found := 2; v_found_mark := '特殊字符!'; ELSIF (instr(v_data, '@') > 0) then v_found := 3; v_found_mark := '特殊字符@'; ELSIF (instr(v_data, '#') > 0) then v_found := 4; v_found_mark := '特殊字符#'; ELSIF (instr(v_data, '$') > 0) then v_found := 5; v_found_mark := '特殊字符$'; ELSIF (instr(v_data, '%') > 0) then v_found := 6; v_found_mark := '特殊字符%'; ELSIF (instr(v_data, '^') > 0) then v_found := 7; v_found_mark := '特殊字符^'; ELSIF (instr(v_data, '&') > 0) then v_found := 8; v_found_mark := '特殊字符&'; ELSIF (instr(v_data, '*') > 0) then v_found := 9; v_found_mark := '特殊字符*'; ELSIF (instr(v_data, '(') > 0) then v_found := 10; v_found_mark := '特殊字符('; ELSIF (instr(v_data, ')') > 0) then v_found := 11; v_found_mark := '特殊字符)'; ELSIF (instr(v_data, '_') > 0) then v_found := 12; v_found_mark := '特殊字符_'; ELSIF (instr(v_data, '+') > 0) then v_found := 13; v_found_mark := '特殊字符+'; ELSIF (instr(v_data, '|') > 0) then v_found := 14; v_found_mark := '特殊字符|'; ELSIF (instr(v_data, '}') > 0) then v_found := 15; v_found_mark := '特殊字符}'; ELSIF (instr(v_data, '{') > 0) then v_found := 16; v_found_mark := '特殊字符{'; ELSIF (instr(v_data, '"') > 0) then v_found := 17; v_found_mark := '特殊字符"'; ELSIF (instr(v_data, ':') > 0) then v_found := 18; v_found_mark := '特殊字符:'; ELSIF (instr(v_data, '?') > 0) then v_found := 19; v_found_mark := '特殊字符?'; ELSIF (instr(v_data, '>') > 0) then v_found := 20; v_found_mark := '特殊字符>'; ELSIF (instr(v_data, '<') > 0) then v_found := 21; v_found_mark := '特殊字符<'; ELSIF (instr(v_data, ',') > 0) then v_found := 22; v_found_mark := '特殊字符,'; ELSIF (instr(v_data, '.') > 0) then v_found := 23; v_found_mark := '特殊字符.'; ELSIF (instr(v_data, '/') > 0) then v_found := 24; v_found_mark := '特殊字符/'; ELSIF (instr(v_data, '''') > 0) then v_found := 25; v_found_mark := '特殊字符'''; ELSIF (instr(v_data, ';') > 0) then v_found := 26; v_found_mark := '特殊字符;'; ELSIF (instr(v_data, '[') > 0) then v_found := 27; v_found_mark := '特殊字符['; ELSIF (instr(v_data, ']') > 0) then v_found := 28; v_found_mark := '特殊字符]'; ELSIF (instr(v_data, '\') > 0) then v_found := 29; v_found_mark := '特殊字符\'; ELSIF (instr(v_data, '=') > 0) then v_found := 30; v_found_mark := '特殊字符='; ELSIF (instr(v_data, '-') > 0) then v_found := 31; v_found_mark := '特殊字符-'; ELSIF (instr(v_data, chr(9)) > 0) then --chr(9)是tab v_found := 32; v_found_mark := '特殊字符tab'; ELSIF (instr(v_data, chr(13)) > 0) then --chr(10)是换行符 v_found := 33; v_found_mark := '特殊字符换行符'; ELSIF (instr(v_data, chr(10)) > 0) then --chr(13)是回车 v_found := 34; v_found_mark := '特殊字符回车'; ELSIF (instr(v_data, ' ') > 0) then v_found := 35; v_found_mark := '特殊字符空格'; end if; if (v_found >= 1) then insert into JH_Record_DB_LOG SELECT sysdate, 'strPatientID=' || strPatientID || ' ,v_table_name=' || v_table_name || ' ,v_cloumn_name=' || v_cloumn_name || ',value=' || v_data || ',found_type=' || v_found_mark as RECORD_CONTENT, 0 RECORD_TYPE FROM dual; end if; commit; end loop; close cur_data; end PRO_JH_FINDSTRING; ```
孙端己
2024年7月24日 17:28
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码