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的示例相关推荐

  1. mysql存储过参数拼接_mysql 存储过程动态拼接sql并执行赋值

    CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50)) BEGIN ## 定义变量 DECLARE _num FL ...

  2. 存储过程中定义sql语句_学习SQL:用户定义的存储过程

    存储过程中定义sql语句 Stored procedures (SPs) are one more powerful database object we have at our disposal. ...

  3. Oracle 存储过程 字符串拼接 SQL注入的问题

    之前项目中写的一个大的存储过程 中间用到的SQL字符串拼接的方法 来完成业务的流程 类似SQL的动态拼接把 为什么要有用到这种形式 因为我这个存储过程里面要处理 至少三个系统的六种情况 所以使用拼接的 ...

  4. mybatis中的xml中拼接sql中参数与字符串的方法

    场景 mybatis中接口方法对应的xml文件中的方法中,需要使用模糊搜索, 查询以参数开头的记录. 错误的sql拼接: <if test="locationVO != null an ...

  5. excel中拼接SQL

    函数如下 =CONCAT("INSERT INTO HIS_DATA(ATTR1, ATTR2, ATTR3, ATTR4, ATTR5, ATTR6, ATTR7, ATTR8, ATTR ...

  6. ASP调用存储过程中与SQL对应的数据类型

    int 3  adInteger整型 int 数据类型可以存储从- 231(-2147483648)到231 (2147483 647)之间的整数.存储到数据库的几乎所有数值型的数据都可以用这种数据类 ...

  7. mysql 存储过程 转义_mysql存储过程中的 sql语句符号问题

    展开全部 不要用斜杠 我看看我这个.没问题PROCEDURE Pro_SelectBidUnit_NOWTIME_ALL(IN P_ID      VARCHAR(64), IN P_IFID     ...

  8. SQL中in参数在存储过程中传递及使用的方法

    背景: 1.使用存储过程 2.存储过程中有in 3.in括号里面的内容作为参数传递 解决方案: 1.直接拼接sql 可在存储过程中拼接字符串,然后执行此字符串,类似于js中的eval PROCEDUR ...

  9. 以表达式作为参数传入SQL的存储过程中去

    在开发过程中,需要把一句Sql 的expression作为一个参数传入Procedure中去. 在asp.net中,一个Search的动作,把用户所操作的搜索条件写成了一句表达式,现只需要把这句表达式 ...

  10. mysql存储过程中as_Mysql存储过程中的delimiter

    这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...

最新文章

  1. property装饰器
  2. 用友登录控件Vbs脚本
  3. Application,Session,Cookie,ViewState和Cache区别
  4. 一个 Linux 上分析死锁的简单方法
  5. Android Usb的研究
  6. wxWidgets:wxHeaderColumnSimple类用法
  7. Codeigniter 获取当前的控制器名称和方法名称
  8. Nginx的rewrite内容介绍
  9. Ubuntu 11.04 x64 下安装Python
  10. Vue、React 之间如何实现代码移植?
  11. CanalSharp-mysql数据库binlog的增量订阅消费组件Canal的.NET客户端
  12. 无人值守安装之cdrom_无人值守安装
  13. mac电脑查看sublime text安装位置和复制文件路径方法:
  14. 好程序员分享js实现简单的板球游
  15. 探讨VSTS联合MS PROJECT协同开发之三:比较篇
  16. 如何查询HP-UX主机防火墙状态
  17. CDR中神奇的卷页滤镜
  18. RGB颜色值转换为十进制
  19. BAT、网易面试经验收集
  20. 压缩[SCOI2007]

热门文章

  1. Unity Invoke 函数调用
  2. UGUI的Button和Toggle
  3. Nginx源码分析 - HTTP模块篇 - HTTP模块的初始化(20)
  4. 设计模式---中介者模式(C++实现)
  5. 生成html数据字典,PHP生成html格式数据字典
  6. Windows10更改电脑用户名
  7. 安卓为什么没有菊花进度条_全新软件首发,居然明目张胆的开车!支持ios+安卓,请务必低调使用!...
  8. MyBatis基于Java API配置
  9. Bean获取Spring容器
  10. 【渝粤教育】国家开放大学2018年秋季 8181-22T (1)老年保健按摩 参考试题