存储过程中拼接sql的示例
create or replace package body CRF_CMS_DOCTOR_PKG is
--根据医院查询医生
PROCEDURE P_HOSPITALBYDOCTOR_LIST
(
v_HOSPITAL_ID IN NUMERIC,
v_DEPT_ID IN NUMERIC,
v_JOBTITLE_ID IN NUMERIC,
v_USER_NAME IN VARCHAR2,
v_MOBILE IN VARCHAR2,
v_DIMDOCTOR_LIST OUT DOCTDRSOR
)
IS
v_SQL VARCHAR2(256);
v_Where VARCHAR2(256);
v_StrEnd VARCHAR2(16);
v_Length NUMBER(8);
BEGIN
--v_SQL:='SELECT USER_NAME,MOBILE,SEX,HOSPITAL_ID,DEPT_ID,JOBTITLE_ID,CREATE_TIME,UPDATE_USER_ID FROM T_DOCTOR_INFO WHERE HOSPITAL_ID like ''%';
v_SQL:='SELECT USER_NAME,MOBILE,SEX,HOSPITAL_ID,DEPT_ID,JOBTITLE_ID,CREATE_TIME,INTRODUCE FROM T_DOCTOR_INFO ';
v_Where:='WHERE ';
IF v_HOSPITAL_ID>0 THEN
v_Where:=v_Where||'HOSPITAL_ID='||TO_CHAR(v_HOSPITAL_ID);
v_Where:=v_Where||' AND';
END IF;
IF v_DEPT_ID>0 THEN
v_Where:=v_Where||' DEPT_ID='||TO_CHAR(v_DEPT_ID);
v_Where:=v_Where||' AND';
END IF;
IF v_JOBTITLE_ID>0 THEN
v_Where:=v_Where||' JOBTITLE_ID='||TO_CHAR(v_JOBTITLE_ID);
v_Where:=v_Where||' AND';
END IF;
IF v_MOBILE<>'00000000000' THEN
v_Where:=v_Where||' MOBILE LIKE ';
v_Where:=v_Where||'''%';
v_Where:=v_Where||v_MOBILE;
v_Where:=v_Where||'%''';
v_Where:=v_Where||' AND';
END IF;
IF v_USER_NAME<>'aaaaaaaaaa' THEN
v_Where:=v_Where||' USER_NAME LIKE ';
v_Where:=v_Where||'''%';
v_Where:=v_Where||v_USER_NAME;
v_Where:=v_Where||'%''';
END IF;
v_Length:=length(v_Where);
v_StrEnd:=substr(v_Where,v_Length-2);
IF v_StrEnd='AND' THEN
v_Where:=substr(v_Where,0,v_Length-4);
END IF;
v_Length:=length(v_Where);
v_SQL:=v_SQL||v_Where;
OPEN v_DIMDOCTOR_LIST FOR v_SQL;
--select * from T_DOCTOR_INFO where HOSPITAL_ID like '%%';
end P_HOSPITALBYDOCTOR_LIST;
end CRF_CMS_DOCTOR_PKG;
注意:要想在存储过程中判断传过来的字符串是否为空,可以写成
IF v_MOBILE not null THEN .....
转载于:https://www.cnblogs.com/zhaoblog/p/5952486.html
存储过程中拼接sql的示例相关推荐
- mysql存储过参数拼接_mysql 存储过程动态拼接sql并执行赋值
CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50)) BEGIN ## 定义变量 DECLARE _num FL ...
- 存储过程中定义sql语句_学习SQL:用户定义的存储过程
存储过程中定义sql语句 Stored procedures (SPs) are one more powerful database object we have at our disposal. ...
- Oracle 存储过程 字符串拼接 SQL注入的问题
之前项目中写的一个大的存储过程 中间用到的SQL字符串拼接的方法 来完成业务的流程 类似SQL的动态拼接把 为什么要有用到这种形式 因为我这个存储过程里面要处理 至少三个系统的六种情况 所以使用拼接的 ...
- mybatis中的xml中拼接sql中参数与字符串的方法
场景 mybatis中接口方法对应的xml文件中的方法中,需要使用模糊搜索, 查询以参数开头的记录. 错误的sql拼接: <if test="locationVO != null an ...
- excel中拼接SQL
函数如下 =CONCAT("INSERT INTO HIS_DATA(ATTR1, ATTR2, ATTR3, ATTR4, ATTR5, ATTR6, ATTR7, ATTR8, ATTR ...
- ASP调用存储过程中与SQL对应的数据类型
int 3 adInteger整型 int 数据类型可以存储从- 231(-2147483648)到231 (2147483 647)之间的整数.存储到数据库的几乎所有数值型的数据都可以用这种数据类 ...
- mysql 存储过程 转义_mysql存储过程中的 sql语句符号问题
展开全部 不要用斜杠 我看看我这个.没问题PROCEDURE Pro_SelectBidUnit_NOWTIME_ALL(IN P_ID VARCHAR(64), IN P_IFID ...
- SQL中in参数在存储过程中传递及使用的方法
背景: 1.使用存储过程 2.存储过程中有in 3.in括号里面的内容作为参数传递 解决方案: 1.直接拼接sql 可在存储过程中拼接字符串,然后执行此字符串,类似于js中的eval PROCEDUR ...
- 以表达式作为参数传入SQL的存储过程中去
在开发过程中,需要把一句Sql 的expression作为一个参数传入Procedure中去. 在asp.net中,一个Search的动作,把用户所操作的搜索条件写成了一句表达式,现只需要把这句表达式 ...
- mysql存储过程中as_Mysql存储过程中的delimiter
这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...
最新文章
- property装饰器
- 用友登录控件Vbs脚本
- Application,Session,Cookie,ViewState和Cache区别
- 一个 Linux 上分析死锁的简单方法
- Android Usb的研究
- wxWidgets:wxHeaderColumnSimple类用法
- Codeigniter 获取当前的控制器名称和方法名称
- Nginx的rewrite内容介绍
- Ubuntu 11.04 x64 下安装Python
- Vue、React 之间如何实现代码移植?
- CanalSharp-mysql数据库binlog的增量订阅消费组件Canal的.NET客户端
- 无人值守安装之cdrom_无人值守安装
- mac电脑查看sublime text安装位置和复制文件路径方法:
- 好程序员分享js实现简单的板球游
- 探讨VSTS联合MS PROJECT协同开发之三:比较篇
- 如何查询HP-UX主机防火墙状态
- CDR中神奇的卷页滤镜
- RGB颜色值转换为十进制
- BAT、网易面试经验收集
- 压缩[SCOI2007]
热门文章
- Unity Invoke 函数调用
- UGUI的Button和Toggle
- Nginx源码分析 - HTTP模块篇 - HTTP模块的初始化(20)
- 设计模式---中介者模式(C++实现)
- 生成html数据字典,PHP生成html格式数据字典
- Windows10更改电脑用户名
- 安卓为什么没有菊花进度条_全新软件首发,居然明目张胆的开车!支持ios+安卓,请务必低调使用!...
- MyBatis基于Java API配置
- Bean获取Spring容器
- 【渝粤教育】国家开放大学2018年秋季 8181-22T (1)老年保健按摩 参考试题