存储过程中拼接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 .....
存储过程中拼接sql的示例的更多相关文章
- 存储过程中拼接SQL语句
很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了.具体看如下演示代码: 代码: set ANS ...
- 在mysql存储过程中拼接sql解决in的字段类型不匹配问题
一个朋友问我一个问题,他写了一个存储过程,并在存储过程调用了另外一个自定义的函数.该函数返回类型如'1,34,56'的字符串,并将该字符串作为存储过程的select的id条件. begin DECLA ...
- 存储过程中拼接sql并且参数化
ALTER PROCEDURE [dbo].[proc_test] ( ) = ' order by id desc ', @userid int, @stime datetime, @etime d ...
- sqlserver 存储过程中拼接sql语句 动态执行
ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @grad ...
- 解决存储过程中拼接的SQL字符串超长导致sql语句被截取的问题
今天遇到了一个奇葩的问题:存储过程中的sql字符串拼接的太长,超出了分页存储过程执行sql参数的nvarchar(4000)的长度. 没办法,只能修改自己的存储过程,因为分页存储过程是不能动的. 开始 ...
- MSSQL存储过程实现拼接sql的注意点
这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改.由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面. 这里就出现了一个问题,我花费 ...
- mysql 存储过程动态拼接sql并执行赋值
)) BEGIN ## 定义变量 ,) ; ## @表示全局变量 相当于php $ ## 拼接赋值 INTO 必须要用全局变量不然语句会报错 SET @strsql = CONCAT('SELECT ...
- SQL Server数据库存储过程中拼接字符串注意的问题
在SQL Server数据库中书写复杂的存储过程时,一般的做法是拼接字符串,最后使用EXEC sp_executesql '拼接的字符串' 查询出结果. 先看一段代码: -- ============ ...
- Oracle 在函数或存储过程中执行sql查询字符串并将结果值赋值给变量
请看黄色部分 --区县指标 THEN TVALUE_SQL := 'SELECT TO_CHAR(' || CUR_ROW.MAIN_FIELD || ') FROM ' || CUR_ROW.END ...
随机推荐
- IBM Intel 微软
IBM是全球IT第一巨头,也是一个很奇特也很强大强大的公司,从螺丝钉键盘鼠标到CPU硬盘内存到大型机巨型机,它都可以制造,从软件到硬件到服务,它都可以提供,这在IT历史上,是否绝后我不敢说,空前应该是 ...
- JVM之--Java内存结构(第一篇)
最近在和同事朋友聊天的时候,发现一个很让人思考的问题,很多人总觉得JVM将java和操作系统隔离开来,导致很多人不用熟悉操作系统,甚至不用了解JVM本身即可完全掌握Java这一门技术,其实个人的观点是 ...
- eclipse 错误: 找不到或无法加载主类
在src文件夹上移除Source Folder,再点右键-Build Path-Use as Source Folder,重新进行编译,一切正常了.
- 机器学习实战__KNN1
KNN的算法工作原理: 存在一个训练样本集合,样本集中每个数据都有确定的标签(分类),即我们知道样本集中每一数据与所属分类的对应关系.输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征 ...
- sql server 判断相同值的数据
举个栗子, 求出相同作者的书 select * from [books] where author in (select author from [books] group by author ha ...
- ICMP报文分析
一.概述: 1. ICMP同意主机或路由报告差错情况和提供有关异常情况.ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议.通常ICMP报文被IP层或更高层协议(TCP或UDP) ...
- C++[类设计] ini配置文件读写类config
//in Config.h #pragma once #include <windows.h> #include <shlwapi.h> #pragma comment(l ...
- rman catalog (rman 恢复目录)
受控制文件大小的限制,一般rman需要用rman catalog来管理及存放备份信息: 这里介绍一下创建rman catalog的步骤: C:\Documents andSettings\Admini ...
- Java基础知识强化26(1):Object类之Object类的概述
1.Object类 类Object是类层次结构的根类,每个类都使用 Object作为超类.所有对象(包括数组)都实现这个类的方法 每个类直接或者间接继承自Object类 2.Object类无参构造 ...
- VNC 黑屏
参考资料: http://blog.sina.com.cn/s/blog_57edaf600100serf.html http://www.programgo.com/article/43581885 ...