Oracle中存储过程中变量的声明与赋值
一.首先变量的声明有3中方式
1.按数据类型进行声明
①直接声明数据类型
②格式:变量名 数据类型(大小)
V_TEST varchar2(20);
V_NUM number;
注:存储过程中声明变量必须在begin之前
并且声明字符串时必须指定大小,不然会报错
2.使用%TYPE声明
①格式:变量名 表名.字段名%TYPE
②含义:该变量的数据类型与指定表的指定字段的数据类型一致
V_NAME DFGZ_PKG.NAME%TYPE;
3.使用%ROWTYPE声明
①变量名 表名%ROWTYPE
②含义:该变量的数据类型与指定表的指定行记录(所有字段)的数据类型一致
--V_TOTALL_ROW 表的整行数据
V_TYPE_TOTALL_ROW V_TOTALL_ROW%ROWTYPE;
总结:
①在Oracle的存储过程中变量的声明不区分大小写
②变量的使用必须声明
二.变量的赋值(3种方式)
1.直接赋值法
①使用 “:=”
②使用条件:适用于声明变量的前两种方式
V_COLUMN :='100';
③变量后面不能直接跟sql语句,负责sql不会执行,如
--错误做法
V_LOGO :=SELECT REVC_SIGN INTO V_LOGO FROM DFGZ_PKG;--正确做法
V_LOGO :=‘SELECT REVC_SIGN INTO V_LOGO FROM DFGZ_PKG’;
④变量的声明和赋值可以一块进行
create....--开始给变量赋值
V_sql :='select reve_state from dfgz_pkg where fileNum=5';begin/*具体业务部分*/end;
2.select 表字段 into 变量 from 表
方式一:
①查询指定表的所有字段
②适用于声明变量的前2种方式可以使用
--根据代发工资个人id查询对应的父机构(代发单位)序列
SELECT REVC_SIGN INTO V_LOGO FROM DFGZ_PKG WHERE REVCID=(SELECT PARENTID FROM DFGZ_PKG WHERE REVEID = V_REVCID);
方式二:
①查询指定表的所有字段
②适用于声明变量的第3种方式
--将id=2203的DFGZ_PKGMX表数据赋值给变量V_COLUMN_SID;SELECT * INTO V_COLUMN_SID FROM DFGZ_PKGMX T WHERE t.id=2203
注:
①查询结果只能返回一条记录
②查询的表字段必须是该表的所有字段
--错误示例一:查询的是所有记录select * into V_COLUMN_SID from DFGZ_PKGMX T;
--错误示例二:查询的是该表的多个字段select t.id,t.name into V_COLUMN_SID from dfgz_pkgmx t;
3.execute immediate sql语句字符串 into 变量
declare /*存储过程,不需要声明*/v_sql varchar2(200);v_revc_row varchar2(200);beginv_sql:='select v_revc_row from dfgz_send where revc_id=22150';--v_revc_row 赋值execute immediate v_sql into v_v_revc_row ;--打印结果(Oracle自带日志打印功能)DBMS_OUTPUT.put_line(v_revc_row );end;
三.变量的调用
1.通常来说,变量只有这3种使用场景:赋值、逻辑判断、算术运算
2.平常不能用作查询列
--错误调用select v_reve_sign from dual;
3.使用%ROWTYPE声明的变量如何调用?
利用“变量名.表字段”的方式可以取到该表中指定行(返回行)的指定列(任意列)所代表的数据。
-- v_revc_row 赋值select v_revc_row from dfgz_send where revc_id=22150;-- 调用DBMS_OUTPUT.put_line(dfgz_send.id);
Oracle中存储过程中变量的声明与赋值相关推荐
- SqlServer中存储过程中将Exec的执行结果赋值给变量输出
原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...
- oracle数据库存储过程中NO_DATA_FOUND不起作用解决
oracle数据库存储过程中NO_DATA_FOUND不起作用 1.首先创建一个表lengzijiantest,表中只有一个字段f_id ? 1 2 3 4 5 [cpp] CREATE TABLE ...
- oracle 中的日志在处理,ORACLE在存储过程中记录日志的处理包
Java开发过程中一般使用LOG4J来将程序的运行日志记录到文件中,在ORACLE存储过程中也需要记录日志,我将工作中自己整理的一个记录日志的包分享出来,其实很简单,希望大家多提意见. 一.表结构 为 ...
- Java变量的声明和赋值
java 语言是强类型(Strongly Typed)语言,强类型包含以下两方面的含义: 所有的变量必须先声明.后使用. 指定类型的变量只能接受类型与之匹配的值. 这意味着每个变量和每个表达式都有一个 ...
- oracle数据存储过程 中的循环 for 拼接字符串,oracle存储过程中使用字符串拼接
1.使用拼接符号"||" v_sql := 'SELECT * FROM UserInfo WHERE ISDELETED = 0 AND ACCOUNT =''' || vAcc ...
- ORACLE在存储过程中记录日志的处理包
Java开发过程中一般使用LOG4J来将程序的运行日志记录到文件中,在ORACLE存储过程中也需要记录日志,我将工作中自己整理的一个记录日志的包分享出来,其实很简单,希望大家多提意见. 一.表结构 为 ...
- java语言语法--- Java标识符(标识符命名规则)、Java关键字、Java变量(变量的声明、赋值、使用)和常量(字符常量、字面常量)(包括Java字节码文件反汇编命令javap)
java语言语法- Java标识符.Java关键字.Java变量和常量(包括Java字节码文件反汇编命令javap) 1.标识符 (1)读音:biao zhi fu (2)什么是标识符? (摘自百度百 ...
- python变量的声明和赋值
python中变量的声明赋值,有三种样式: 一.单一变量赋值,如: a = 1a = "你好!" 二.相同一个值,赋值给多个不同的变量,如: a = b = c= d =55aa ...
- pl/sql 变量的声明与赋值
pl/sql 是一种强类型的编程语言,所有的变量必须声明后再使用 ,要求在DECLARE部分进行声明 变量名称规定: 变量名称可以有字母,数字 _ $ #等组成 所有的变量名称要求以字母开头,不能是o ...
- oracle创建存储过程设置变量,oracle建游标变量包,且在存储过程中使用
--建包 createorreplacepackage PA_BGYZB as type sp_cursor is ref cursor; end PA_BGYZB; --存储过程调用包 create ...
最新文章
- Hudson:持续集成工具的安装、使用
- VMware linux 克隆机的配置
- oauth2 token为空拦截_feign之间传递oauth2-token的问题和解决
- HTML5 高级系列:web Storage 学前端开发要先看这个
- Linux 安装Zookeeper单机版(使用Mac远程访问)
- android jar导出,Android项目导出jar包的小技巧
- Linux系统各文件、目录介绍
- AlexNet做文档布局分析 (版面分析)数据集
- 第一次网络渗透实验报告
- android系统查看wifi密码,安卓手机如何查看WIFI密码
- 从零开始学Java自己利用接口和集合框架做的简单图书管理系统
- 【转】傅里叶分析之掐死教程
- ftp服务器端口修改,FTP端口:默认为21端口
- 算法题 高斯消元解线性方程组(Python)
- 微博营销五种鱼饵秘制方法-鱼塘理论
- oracle11g64跟32,plsql32 位连接oracle11g64位方法
- 手把手教你用JAVA实现“语音合成”功能(文字转声音)标贝科技
- 我等到花儿也谢了(国语)铃声 我等到花儿也谢了(国语)手机铃声...
- Outlook2013/2016签名选项卡无法打开
- AD域帐号被锁问题排查