Python使用cx_Oracle调用Oracle存储过程的方法示例
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下:
这里主要测试在Python中通过cx_Oracle调用PL/SQL。
首先,在数据库端创建简单的存储过程。
create or replace procedure test_msg(i_user in varchar2, o_msg out varchar2) is begin o_msg := i_user ||', Good Morning!'; end;
然后,开始在Python命令行中进行存储过程调用。
import cx_Oracle as cx conn = cx.connect('database connecting string') cursor = conn.cursor() #声明变量 user = 'Nick' #plsql入参 msg = cursor.var(cx_Oracle.STRING) #plsql出参 #调用存储过程 cursor.callproc('test_msg', [user, msg]) #['Nick', 'Nick, Good Morning!'] #打印返回值 print msg #<cx_Oracle.STRING with value 'Nick, Good Morning!'> print msg.getvalue() #Nick, Good Morning! #资源关闭 cursor.close() conn.close()
延伸阅读:
存储过程、cx_Oracle、Python的对象类型之间存在转换关系。具体如下:
Oracle | cx_Oracle | Python |
VARCHAR2, NVARCHAR2, LONG | cx_Oracle.STRING | str |
CHAR | cx_Oracle.FIXED_CHAR | str |
NUMBER | cx_Oracle.NUMBER | int |
FLOAT | cx_Oracle.NUMBER | float |
DATE | cx_Oracle.DATETIME | datetime.datetime |
TIMESTAMP | cx_Oracle.TIMESTAMP | datetime.datetime |
CLOB | cx_Oracle.CLOB | cx_Oracle.LOB |
BLOB | cx_Oracle.BLOB | cx_Oracle.LOB |
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
相关推荐
-
oracle数据库导入导出命令解析
Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失). Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接(通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端 修了条路,然后数据就可以被拉过来了) 这样你可以把数据导出到本地,虽然可能服务器离你很远.
-
浅谈oracle rac和分布式数据库的区别
1.分布式数据库是多个数据库,而rac只是一个库多个实例: 2.rac事务上没有协调的问题,而分布式数据库由于是多个库需要事务上的协调: 3.分布式数据库数据是分散存储在各个节点,但是设备一般都是廉价的设备,经常出现节点故障,不过对用户来说是透明的:.RAC是ORACLE集群,数据是共享存储,只有一份,每个节点都不存放数据.节点可以宕,但是数据不会丢失: 4.分布式数据库支持的节点多,增加节点基本为线性增加:rac支持的节点数少,增加节点性能不是线性增加: 5.Oracle最大的问题在于shar
-
ORACLE批量导入图片到BLOB字段代码示例
要插入图片的表不是固定的,而且是批量插入很多张,还要考虑到因为图片的文件名错误,修改后要再次插入,此时应避免已经插入的重复执行操作, 浪费时间. 所以就选择先用一张临时表来暂时保存从文件系统读取的照片,用DBMS_LOB的方法来处理. 第一步:创建一个数据库可以访问的目录(注意:这个目录是数据库服务器上的目录,不是客户机上的) -- Create directory create or replace directory 图片目录 as 'E:\照片'; 第二步:将图片文件放入刚建好的目录下面,
-
常用的Oracle doc命令(收藏)
1.连接数据库 普通用户连接数据库: conn scott/tiger –(默认的用户名/密码).conn 即"connection"连接数据库的意思 超级管理员连接: Conn sys/sys as sysdba–oracle数据库不区分大小写 2.sql文件 保存sql文件 save c:\test.txt 编辑sql语句,用记事本编辑 ed c:\1.txt –编辑 SQL 语句 ed –直接打开上一次缓存sql语句 描述数据表的结构 desc employee; –打开empl
-
oracle数据匹配merge into的实例详解
oracle数据匹配merge into的实例详解 前言: 很久之前,估计在2010年左右在使用Oralce,当时有个需求就是需要对两个表的数据进行匹配,这两个表的数据结构一致,一个是正式表,一个是临时表,这两表数据量还算是比较大几百M.业务需求是用临时表中的数据和正式表的匹配,所有字段都需要一一匹配,而且两表还没有主键,这是一个比较麻烦和糟糕的事情. 场景: 1.如果两表所有字段值都一致则不处理: 2.如果有部分字段不一致则更新: 3.如果正式表中数据在临时表中不存在,则需要删除: 满足上面场
-
ORACLE SQL语句优化技术要点解析
操作符优化: IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格. 但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询. 由此可见用IN的SQL至少多了一个转换的过程.一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了. 推荐方案:
-
Linux下修改Oracle监听地址的方法
lisenter.ora 目录在 /opt/oracle/11g/network/admin LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.111.123)(PORT = 1521)) ) ) ADR_BASE_LISTENER = /opt/oracle tnsnames.o
-
Python使用cx_Oracle调用Oracle存储过程的方法示例
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法.分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL. 首先,在数据库端创建简单的存储过程. create or replace procedure test_msg(i_user in varchar2, o_msg out varchar2) is begin o_msg := i_user ||', Good Morning!'; end; 然后,开始在Pytho
-
Mybatis调用Oracle存储过程的方法图文详解
1:调用无参数的存储过程. 创建存储过程: Mapper.xml 配置:经测试其他标签(update.insert.select)也可以. Mapper.java MapperTest.java 测试 2:有参数的存储过程调用: 2.1存储过程的创建: 2.2Mapper.xml 的配置: 2.3Mapper.java 2.4MapperTest.java 测试 控制台输出: 3:存储过程的结果集调用. 3.1创建存储过程: 3.2 Mapper.xml 配置 配置 resultMap结果集字段
-
C#调用Oracle存储过程的方法
本文实例讲述了C#调用Oracle存储过程的方法.分享给大家供大家参考.具体实现方法如下: Oracle数据库代码如下: 复制代码 代码如下: create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,paraminout in out varchar2) as varparam varchar2(28); begin varparam:=paramin; paramout:=va
-
asp.net中调用oracle存储过程的方法
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它. 存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 不多说了,本文通过两种方法介绍asp.net中调用oracle存储过程的方法,具体内容请看下面代码. 调用oracle存储过程方法一: ORACLE代码 CREATE OR REP
-
PHP使用PDO调用mssql存储过程的方法示例
本文实例讲述了PHP使用PDO调用mssql存储过程的方法.分享给大家供大家参考,具体如下: 数据库中已创建存储过程user_logon_check, PHP调用示例如下, <?php $dsn = 'mssql:dbname=MyDbName;host=localhost'; $user = 'sa'; $password = '666666'; try { $dbCon = new PDO($dsn, $user, $password); } catch (PDOException $e)
-
用PHP调用Oracle存储过程的方法
但是使用存储过程至少有两个最明显的优点:速度和效率.使用存储过程的速度显然更快.在效率上,如果应用一次需要做一系列sql操作,则需要往返于php与oracle,不如把该应用直接放到数据库方以减少往返次数,增加效率.但是在internet应用上,速度是极度重要的,所以很有必要使用存储过程.偶也是使用php调用存储过程不久,做了下面这个列子. 代码 复制代码 代码如下: //建立一个test表 create table test ( id number(16) not null, name varc
-
java调用Oracle存储过程的方法实例
1.测试添加数据的procedure 复制代码 代码如下: public void testProcedure() { Connection con = getConnction(); // **1.测试添加数据的procedure String procedure = "{call users_insert_proc(?,?,?,?) }"; CallableStatement cs = null; try { c
-
python中子类调用父类函数的方法示例
前言 本文主要给大家介绍了关于python子类调用父类函数的相关内容,Python中子类中的__init__()函数会覆盖父类的函数,一些情况往往需要在子类里调用父类函数.下面话不多说了,来一起看看详细的介绍: 如下例程里,???处是需要调用父类函数的地方,接下来结合例程具体介绍. # -*- coding:utf-8 -*- class Student: def __init__(self,name): self.name=name def ps(self): print('I am %s'%
-
Mybatis传list参数调用oracle存储过程的解决方法
怎么利用MyBatis传List类型参数到数据库存储过程中实现批量插入数据? MyBatis中参数是List类型时怎么处理?大家都知道MyBatis批处理大量数据是很难做到事务回滚的(事务由Spring管理),都将逻辑写在存储中又是及其头疼的一件事(参数长度也有限制),那么我想的是将参数在后台封装为单个或多个list集合,直接通过MyBatis将此参数传到数据库存储过程中,一来摆脱了MyBatis批量插入数据的诸多限制(例如:不能实时返回主键.foreach标签循环集合长度有限制),二来就是在存
-
C#调用Oracle存储过程方法介绍(附源码)
C#调用Oracle存储过程的代码如下所示: using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Configuration; using System.Data; using System.Data.OracleClient; using System.Drawing; using Syste
随机推荐
- 10个调试和排错的小建议
- 简单的编程0基础下Python入门指引
- SQLite教程(五):索引和数据分析/清理
- dreamweaver cs4 改进了flash的链接代码
- ant使用指南详细入门教程
- Java列出2到100之间所有素数的方法
- 使用maven运行Java Main的三种方法解析
- 批量替换 MySQL 指定字段中的字符串
- Python fileinput模块使用实例
- Python语言的面相对象编程方式初步学习
- Android shell命令行中过滤adb logcat输出的方法
- 在Flash中添加“设为首页”、“加为收藏”的方法
- jQuery中:gt选择器用法实例
- Bootstrap打造一个左侧折叠菜单的系统模板(一)
- python list元素为tuple时的排序方法
- Laravel框架使用Redis的方法详解
- PHP常见过waf webshell以及最简单的检测方法
- C++实现推箱子游戏
- 浅析Android中getWidth()和getMeasuredWidth()的区别
- 微信小程序搜索功能(附:小程序前端+PHP后端)