动态执行存储过程条件处理

动态执行存储过程条件处理

create procedure test(@where1 nvarchar(2000))
as
declare @sql nvarchar(2000)
set @sql= 'select * from tabletest where 1=1 '+ @where1
exec (@sql)

 

exec test 'and where1 = @where1  '
exec test 'and where1 = @where1 and where2 = @where2 '

//

create procedure test(@where1 int, @where2 int, @where3 int)
as
  if @where1 is not null and @where2 is null and @where3 is null
      select * from tabletest where where1 = @where1
  if @where1 is not null and @where2 is not null and   @where3 is null
      select * from tabletest where where1 = @where1 and where2 = @where2
  if @where1 is not null and @where2 is not null and @where3 is not null 
      select * from tabletest where where1 = @where1 and where2 = @where2 and where3 = @where3

  
//

select *
from tabletest
where (where1 = @where1 or @where1 is null)
and (where2 = @where2 or @where2 is null)
and (where3 = @where3 or @where3 is null);

//

select *
from tabletest
where     where1 = case when @where1 is not null then @where1 else where1 end and
      where2 = case when @where2 is not null then @where2 else where2 end and
      where3 = case when @where3 is not null then @where3 else where3 end

 

时间: 2024-09-28 13:00:17

动态执行存储过程条件处理的相关文章

SQL Server联机丛书:执行存储过程

server|存储过程|执行 EXECUTE执行标量值的用户定义函数.系统过程.用户定义存储过程或扩展存储过程.同时支持 Transact-SQL 批处理内的字符串的执行 若要唤醒调用函数,请使用 EXECUTE stored_procedure 中描述的语法.语法执行存储过程:[ [ EXEC [ UTE ] ]     {          [ @return_status = ]             { procedure_name [ ;number ] | @procedure_n

jdbcTemplate.execute 执行 存储过程 的时候,总是报缺失右括号错误

问题描述 大家好,我用StringSqlstr="callP_SQL_TO_CSV('select*fromIN$_DATACHANGE@DBCENTERtwheret.p_namein('2010-11','2010-06')','CSV_DIR','r_dc_time_pwsc.csv')"jdbcTemplate.execute(Sqlstr);//这段话执行的时候总是提示说:java.sql.SQLException:ORA-00907:缺失右括号但是我把那些参数,放在PL/S

java中动态执行一段代码

动态|执行 动态的执行一段简单代码,采用生成java文件,调用javac编译,反射执行的方式. 只是一个简单测试,有些地方有待完善. 代码如下 -------------------------------------------------------------------------------- import java.io.*; /** * 动态执行一段代码(生成文件->编译->执行) * @author kingfish * @version 1.0 */public class

启动SQL SERVER时自动执行存储过程

如何在启动SQL SERVER的时候,执行一个存储过程? 将存储过程创建在master数据库中,然后企业管理器中找到这个存储过程--右键--属性--勾选"每当sql server启动时执行". --或者在master中创建存储过程后,执行语句设置为自动启动 use master exec sp_procoption '存储过程名','startup','on' ---------------------------------------------------------------

动SQL SERVER时自动执行存储过程

server|存储过程|执行 如何在启动SQL SERVER的时候,执行一个存储过程? 将存储过程创建在master数据库中,然后企业管理器中找到这个存储过程--右键--属性--勾选"每当sql server启动时执行". --或者在master中创建存储过程后,执行语句设置为自动启动 use master exec sp_procoption '存储过程名','startup','on' ------------------------------------------------

在C#中用最简洁有效的代码执行存储过程并返回数据

存储过程|数据|执行 存储过程 p_sys_Login 定义如下: CREATE PROCEDURE p_sys_Login @argUserID varchar(20), --用户名 @argPassword varchar(20), --密码 @argResult varchar(50) OUTPUT --登录结果 AS /* ... ... */ 下面演示如何在C#中用最简洁有效的代码执行该存储过程并返回数据: /// <summary> /// 用户登录验证 /// </summ

与动态执行的C#代码进行通讯

1.简介 能够动态执行 C# 代码是一件很酷的功能,比如,我们可以在控制台中输入一行 C# 代码,然后程序 自动编译并执行这一行代码,将结果显示给我们.这差不多就是一个最简单的 C# 代码解释器了. 动态执行 C# 代码又是一件很有用的功能,比如,我们可以将某些代码写在某个文件之中,由程序集 在执行时进行加载,改变这些代码不用中止程序,当程序再次加载这些代码时,就自动执行的是新代码了 . 下面,我将在写一个简单C# 代码解释器,然后将在 C# 代码解释器之中加入动态代码与解释器环境间 的动态交互

oracle中如何执行存储过程和创建存储过程

创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out type) as --声明变量(变量名 变量类型) begin --存储过程的执行体 end test; 打印出输入的时间信息 E.g: create or replace procedure test(workDate in Date) is begin dbms_output.putline(&apos;The input date is:&

MySQL用户执行存储过程的权限

  MySQL中以用户执行存储过程的权限为EXECUTE 比如我们在名为configdb的数据库下创建了如下存储过程,存储过程的定义者为user_admin use configdb; drop procedure if exists sp_dev_test_user_add; delimiter $$ CREATE DEFINER=`user_admin`@`%` PROCEDURE `sp_dev_test_user_add`( in var_user varchar(30), in var