oracle 存储过程 变量的声明和赋值的3种方式
1.声明变量的3种方式
按照数据类型的声明方式进行区分
方式一:直接声明数据类型
格式:变量名 数据类型(大小)
V_START_DATE VARCHAR2(19);
v_num number;
说明:
设置为字符串类型时,需要指定大小,否则报错;
变量的声明必须在"begin"关键字之前进行。
--错误用法
BEGIN
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
方式二:使用%TYPE声明
格式:变量名 表名.字段名%TYPE
含义:该变量的数据类型与指定表的指定字段的数据类型一致
V_ORGSEQ BASE_ORG_INFO.ORGSEQ%TYPE;
方式三:使用%ROWTYPE声明
格式:变量名 表名%ROWTYPE
含义:该变量的数据类型与指定表的指定行记录(所有字段)的数据类型一致
--VIRTUAL_CARD表整行数据
V_ROW_VIRTUAL_CARD VIRTUAL_CARD%ROWTYPE;
小结:
在存储过程中,声明变量时,不需要使用关键字"DECLARE";
变量不区分大小写;
变量在使用前必须声明。
2.变量赋值的3种方式
方式一:直接赋值,使用":="
使用条件:适用于声明变量的前2种方式。
V_ORGID := '110';
说明:
变量后面跟不能直接是sql语句,sql不会执行,可以参考方式三。
--错误用法
V_ORGSEQ := SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO;
--正确用法
V_ORGSEQ := 'SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO';
变量的声明和赋值可以一块进行。
--正确用法
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
BEGIN
/* 具体业务 */
END;
方式二:select 表字段 into 变量 from 表
变形一:查询指定表的一个指定字段
使用条件:适用于声明变量的前2种方式可以使用
--根据医疗机构ID查询对应的父机构的机构序列
SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO
WHERE ORGID =
(SELECT PARENTORGID FROM BASE_ORG_INFO WHERE ORGID = V_ORGID);
变形二:查询指定表的所有字段
使用条件:只适用于声明变量的第3种方式
--将id=5120的VIRTUAL_CARD表数据赋值给变量V_ROW_VIRTUAL_CARD
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;
说明:
查询结果只能返回一条记录;
查询的表字段必须是该表的所有字段。
错误举例:
--错误举例一:查询的是所有表记录
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;
--错误举例二:查询的是该表的多个字段
SELECT t.id,t.name INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;
方式三:execute immediate sql语句字符串 into 变量
declare/* 存储过程,不需要声明 */
v_sql varchar2(100);
V_ORGSEQ varchar2(100);
begin
v_sql := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
--V_ORGSEQ赋值
execute immediate v_sql INTO V_ORGSEQ;
--打印结果
DBMS_OUTPUT.put_line(V_ORGSEQ);
END;
3.变量的调用
一般来说,变量只有这3种使用场景:赋值、逻辑判断、算术运算;
说明:不能用作查询列
--错误调用
select V_ORGSEQ from dual;
使用%ROWTYPE声明的变量如何调用?
利用"变量名.表字段"的方式可以取到该表中指定行(返回行)的指定列(任意列)所代表的数据。
--V_ROW_VIRTUAL_CARD赋值
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;
--调用
DBMS_OUTPUT.put_line(V_ROW_VIRTUAL_CARD.ID);
oracle 存储过程 变量的声明和赋值的3种方式的更多相关文章
- ORACLE 存储过程中保存用户自定义异常信息的一种方式
1.创建错误日志表: create table REP_LOGS ( log_s_no NUMBER not null, log_date DATE default sysdate not null, ...
- PL/SQL编程基础(二):变量的声明、赋值、(赋值、连接、关系、逻辑)运算符
变量的声明.赋值.运算符 1.声明并使用变量 变量可以在声明时赋值,也可以先定义后赋值: 使用%TYPE与%ROWTYPE可以根据已有类型定义变量. PL/SQL是一种强类型的编程语言,所有的变量都必 ...
- Oracle中函数/过程返回结果集的几种方式
原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式: 以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过. ...
- 对于String对象,可以使用"="赋值,也可以使用"new"关键字赋值,两种方式有什么区别?
当你看见这个标题的时候,你可能会下意识的去想一下,这两种方式到底有什么样的区别呢? 且看下面的demo,自然便区分开了 /** * */ package com.b510.test; /** * Pr ...
- pl sql 变量的声明和赋值
链接地址:http://www.cnblogs.com/zhengcheng/p/4168670.html 一.什么是PL-SQL PL-SQL是结合了Oracle过程语言和结构化查询语言(SQL)的 ...
- Robot Framework--07 变量的声明、赋值及其使用
转自:http://blog.csdn.net/tulituqi/article/details/7984642 一.变量的声明 1.变量标识符 每个变量都可以用 变量标识符{变量名} 来进行 ...
- avaScript中变量的声明和赋值
变量是指程序中一个已经命名的存储单元,它的主要作用就是为数据操作提供存放信息的容器.变量是相对常量而言的.常量是一个不会改变的固定值,而变量的值可能会随着程序的执行而改变.变量有两个基本特征,即变量名 ...
- Java数组声明与拷贝的几种方式
Java数组声明的三种方式 第一种(声明并初始化): 数据类型[] 数组名={值,值,...}; 例:int[] a = {1,2,3,4,5,6,7,8}; ...
- DLL声明导出函数的两种方式
DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport):另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出.属 ...
随机推荐
- bzoj 1833
f[pos][top] 统计数字个数 g[pos][top][digit] 统计数位(对于f[pos][top]中的所有数) /************************************ ...
- nginx hello模块代码
// ngx_http_mytest_module.c #include "ngx_core.h" #include "ngx_string.h" #inclu ...
- [转]android 自定义圆形imageview控件
android布局 首先,定义定义圆形Imageview类: import android.content.Context; import android.graphics.Bitmap; imp ...
- UESTCACM 每周算法讲堂 延迟标记+bfs dfs搜索入门
http://www.bilibili.com/video/av4163472/ 地址在上面~
- Ehcache缓存时间设置
timeToLiveSeconds和timeToIdleSecondstimeToLiveSeconds=x:缓存自创建日期起至失效时的间隔时间x:timeToIdleSeconds=y:缓存创建以后 ...
- React Native中树 TreeView 实现(2)
接上文,剩下的展示工作是重中之重,首先确定节点的布局草稿——也就是如何render item: 在此之前还有一个重要的问题就是选择何种组件盛放展示子结点,一般有如下两种: 使用scrollview加载 ...
- 解决新版本webpack vue-cli生成文件没有dev.server.js问题
新版本webpack生成的dev.server.js 在webpack.dev.conf.js中 webpack.dev.conf.js const axios = require('axios') ...
- IDA Bitfields
Bitfields There is a special kind of enums: bitfields. A bitfield is an enum where the 32bits are di ...
- mysql字符串比较
select '123'B is TRUE; 1 SET @a='123'; select '123'is TRUE; 0 select cast('222' as ...
- [置顶] JDK工具(一)–Java编译器javac
1.概述 javac.exe: Java编译器,将Java源代码转换成字节码. 2.用法 javac <选项> <源文件> (使用过程中发现,javac <源 ...