`

oralce存储过程使用动态sql

阅读更多

在存储过程中,我想根据条件拼装sql,这个时候select xx into v_xx这样就不行了,返回不了值。要使用

 

execute immediate v_sql into v_access_number;

 

create or replace procedure p_access_user
(
   v_starttime in varchar2,
   v_endtime in varchar2,
   v_adjusttype in varchar2,
   v_results in varchar2,
   v_province in varchar2,
   v_access_number out adjust_power_transaction_his.id%type
) 
is
   v_char_16  varchar2(20);
   v_char_two_16 varchar2(20);
   v_like varchar2(20000);
   v_sql varchar2(25000):='select count(*)from adjust_power_transaction_his t where 1=1 ';
begin
   --时间段
   if(v_starttime is not null and v_endtime is not null) then
     v_sql:=v_sql||' and t.begintime>= to_date('''||v_starttime||''',''yyyy-MM-dd hh24:mi:ss'')'||'and t.begintime<=to_date('''||v_endtime||''',''yyyy-MM-dd hh24:mi:ss'')';            
   end if; 
   
   --校准方式
   if(v_adjusttype is not null)then
     v_sql:=v_sql||' and t.adjusttype='||v_adjusttype||'';
   end if;
   
   --校准处理结果
   if(v_results is not null)then
     v_sql:=v_sql||' and t.result= '''||v_results||'''';
   end if;
   
   --省份
   if(v_province is not null)then
     select to_char(v_province,'xxx') into v_char_16 from dual;
     if length(trim(v_char_16)) = 1 
        then
          v_char_two_16 :='0'||trim(v_char_16);
        else
          v_char_two_16 := trim(v_char_16);     
      end if; 
      v_like :=  upper('01'||v_char_two_16||'%');       
      v_sql:=v_sql||' and t.cardno like'''|| v_like||'''';
   end if;
  
   --接入用户统计
   execute immediate v_sql into v_access_number;
   
   --dbms_output.put_line(v_sql); 
end p_access_user;
 

 

分享到:
评论

相关推荐

    SQLServer存储过程转为oracle存储过程的工具

    可以将SQL Server存储过程转为oracle存储过程的工具

    oracle存储过程学习经典入门

    在存储过程中,做简单动态查询需要使用 EXECUTE IMMEDIATE 语句或 DBMS_SQL 包来执行动态 SQL 语句。 Oracle 存储过程学习目录是学习 Oracle 存储过程的基础知识,了解 Oracle 存储过程的基本语法、基础知识和一些...

    存储过程中怎么动态执行sql语句

    通过以上两个示例可以看出,在Oracle存储过程中实现动态SQL语句的关键在于利用`EXECUTE IMMEDIATE`动态执行SQL语句以及通过创建包的方式来实现更为复杂的动态数据处理逻辑。这两种方法不仅提高了代码的灵活性,还...

    Oracle存储过程LP/SQL练习题(含答案)

    Oracle存储过程LP/SQL练习题(含答案) 几个练习题

    oracle到sqlserver存储过程语法转换

    ### Oracle到SQL Server存储过程...在进行数据库迁移时,开发者需要仔细分析现有的Oracle存储过程,然后根据SQL Server的语法特点进行相应的转换。此外,还应考虑到性能优化等问题,确保迁移后的应用程序能够高效运行。

    Oracle存储过程中使用临时表

    本篇文章将深入探讨如何在Oracle存储过程中使用临时表,包括会话级临时表和事务级临时表。 ### 会话级临时表 会话级临时表(Session-Level Temporary Tables)只在创建它的会话内可见,并且在会话结束时自动删除。...

    oracle 存储过程 函数 dblink

    在这段Java代码中,我们使用了`CallableStatement`来调用Oracle存储过程`TESTA`。关键点包括: - `prepareCall`方法用于准备调用存储过程。 - 使用`setString`方法设置输入参数的值。 - 调用`execute`方法执行存储...

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...

    oracle存储过程解锁

    以下是对“oracle存储过程解锁”这一主题的深入解析。 ### 标题:“oracle存储过程解锁” #### 解析: 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL代码块,用于执行复杂的业务逻辑或数据处理...

    Python使用cx_Oracle调用Oracle存储过程的方法示例

    本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...

    oracle存储过程unwrap解密工具.zip

    Oracle存储过程是数据库管理员和开发人员用来封装SQL语句和PL/SQL代码的单元。它们可以执行复杂的业务逻辑,提高性能,并简化数据库操作。在某些情况下,存储过程可能被加密,这可能是出于安全考虑,防止未授权访问...

    ORACLE存储过程最全教程

    Oracle存储过程是数据库管理系统Oracle中的一个关键特性,它允许开发者编写一组预编译的SQL和PL/SQL语句,以实现特定的业务逻辑或数据库操作。这篇教程将深入讲解Oracle存储过程的各个方面,帮助你从基础到高级全面...

    oracle存储过程-帮助文档

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写一系列SQL语句和PL/SQL块,形成可重复使用的代码单元。这篇博客“oracle存储过程-帮助文档”可能提供了关于如何创建、调用和管理Oracle存储过程...

    Oracle学习开发常用的SQL和存储过程学习(内含SQL面试题目和存储过程,函数面试题目).zip

    本资源“Oracle学习开发常用的SQL和存储过程学习(内含SQL面试题目和存储过程,函数面试题目).zip”提供了全面的学习材料,旨在帮助初学者和求职者提升在Oracle数据库中的SQL查询和存储过程编写技能。 SQL...

    Oracle存储过程开发的要点

    Oracle存储过程是数据库管理系统Oracle中的一种重要特性,用于封装一系列SQL和PL/SQL代码,以实现特定的功能。在Oracle中,存储过程可以提高应用程序的性能,因为它减少了与数据库的交互次数,并允许在数据库级别...

    oracle存储过程学习经典

    综上所述,Oracle存储过程的学习不仅涉及基础语法和结构的理解,还需要掌握其高级特性和最佳实践,包括动态SQL、异常处理、性能优化以及与其他编程语言的集成。通过深入研究这些知识点,可以充分发挥Oracle存储过程...

    pb中执行oracle存储过程脚本

    在描述中提到的“使用批处理进行oracle存储过程脚本的创建和更新的处理”,这可能意味着开发者使用批处理命令(如Windows的批处理文件`.bat`)来自动化执行创建或更新Oracle存储过程的任务。批处理文件可以包含一...

    oracle 事务 回滚 存储过程

    ### Oracle存储过程 存储过程是在数据库中预编译的一组SQL语句,用于执行复杂的业务逻辑或数据操作。它们可以接受输入参数,执行一系列数据库操作,并返回结果。在Oracle中,存储过程使用PL/SQL编写,可以在数据库...

    C# 传入自定义列表List 到Oracle存储过程

    本文将详细讲解如何在C#中使用自定义列表(List)作为参数调用Oracle存储过程,以及实现这一功能的关键技术和注意事项。 首先,我们需要了解Oracle数据库中的PL/SQL类型,例如VARCAR2、NUMBER等,它们对应于C#中的...

    hibernate query调用oracle存储过程

    以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....

Global site tag (gtag.js) - Google Analytics