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 .....

存储过程中拼接sql的示例的更多相关文章

  1. 存储过程中拼接SQL语句

    很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了.具体看如下演示代码: 代码: set ANS ...

  2. 在mysql存储过程中拼接sql解决in的字段类型不匹配问题

    一个朋友问我一个问题,他写了一个存储过程,并在存储过程调用了另外一个自定义的函数.该函数返回类型如'1,34,56'的字符串,并将该字符串作为存储过程的select的id条件. begin DECLA ...

  3. 存储过程中拼接sql并且参数化

    ALTER PROCEDURE [dbo].[proc_test] ( ) = ' order by id desc ', @userid int, @stime datetime, @etime d ...

  4. sqlserver 存储过程中拼接sql语句 动态执行

    ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @grad ...

  5. 解决存储过程中拼接的SQL字符串超长导致sql语句被截取的问题

    今天遇到了一个奇葩的问题:存储过程中的sql字符串拼接的太长,超出了分页存储过程执行sql参数的nvarchar(4000)的长度. 没办法,只能修改自己的存储过程,因为分页存储过程是不能动的. 开始 ...

  6. MSSQL存储过程实现拼接sql的注意点

    这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改.由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面. 这里就出现了一个问题,我花费 ...

  7. mysql 存储过程动态拼接sql并执行赋值

    )) BEGIN ## 定义变量 ,) ; ## @表示全局变量 相当于php $ ## 拼接赋值 INTO 必须要用全局变量不然语句会报错 SET @strsql = CONCAT('SELECT ...

  8. SQL Server数据库存储过程中拼接字符串注意的问题

    在SQL Server数据库中书写复杂的存储过程时,一般的做法是拼接字符串,最后使用EXEC sp_executesql '拼接的字符串' 查询出结果. 先看一段代码: -- ============ ...

  9. Oracle 在函数或存储过程中执行sql查询字符串并将结果值赋值给变量

    请看黄色部分 --区县指标 THEN TVALUE_SQL := 'SELECT TO_CHAR(' || CUR_ROW.MAIN_FIELD || ') FROM ' || CUR_ROW.END ...

随机推荐

  1. (转载)Python 列表(list)操作

    (转载)http://blog.csdn.net/facevoid/article/details/5338048 创建列表sample_list = ['a',1,('a','b')] Python ...

  2. COCI2014-2015CONTEST#7——POLICE

    http://www.hsin.hr/coci/archive/2014_2015/contest7_tasks.pdf [题目描述] 有N个书架,每个书架可以容纳M本书.给出了若干本书,每本书有一个 ...

  3. CSS3学习笔记(新属性)

    1. 边框(圆角边框.加阴影和用图片绘制) 新增加 border-radius  box-shadow  border-image .div1{ border:2px solid purple; bo ...

  4. js打开新的链接

    当前页面打开一个链接:window.location="URL" 打开一个新的页面,再打开一个新的链接:window.open(URL,窗口名称,窗口风格) window对象具有如 ...

  5. Managing Hierarchical Data in MySQL

    Managing Hierarchical Data in MySQL Introduction Most users at one time or another have dealt with h ...

  6. SKPhysicsContact类

    继承自 NSObject 符合 NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0 ...

  7. Com原理及應用——Com對象和接口

    1.COM对象的理解 COM对象类似于C++语言中类的概念,类的每个实例代表一个COM对象,它也包括属性(即状态)和方法(即操作),状态反映对象的存在,方法就是接口. 2.COM对象的标识-CLSID ...

  8. Android 连接Wifi和创建Wifi热点 demo

    android的热点功能不可见,用了反射的技术搞定之外. Eclipse设置语言为utf-8才能查看中文注释 上代码: MainActivity.java package com.widget.hot ...

  9. 【转】关于Ubuntu的sources.list 的总结

    一.作用 文件/etc/apt/sources.list是一个普通可编辑的文本文件,保存了ubuntu软件更新的源服务器的地址.和sources.list功能一样的是/etc/apt/sources. ...

  10. PHP 执行系统外部命令 system() exec() passthru()

    区别: system() 输出并返回最后一行shell结果. exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面. passthru() 只调用命令,把命令的运 ...