IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> LightDB中的存储过程(三)—— 静态SQL -> 正文阅读

[大数据]LightDB中的存储过程(三)—— 静态SQL

LightDB支持存储过程,除了支持Postgres的plpgsql存储过程,还兼容Oracle的存储过程,新增了plorasql过程语言。上一篇中我们介绍了存储过程中的控制语句,这一篇主要讲述存储过程中的静态SQL语句。

什么是静态SQL语句呢?

PL/SQL中的静态SQL语句是指可以直接在PL/SQL中使用的SQL语句,其语法与标准的SQL语义完全一致。

由于PL/SQL程序执行时采用早期绑定,即在编译阶段对变量进行绑定,识别程序中标识符的位置,检查用户权限、数据库对象等信息,因此在PL/SQL中并不是所有语句就可以出现的,下列类型的SQL语句是可以出现的,因为它们不会修改数据库模式对象及其权限。

  • 查询语句: SELECT
  • DML语句: INSERT、UPATE、DELETE、MERGE (其中MERGE为lightdb22.1版本新增特性)
  • 事务控制语句: COMMIT、ROLLBACK、BEGIN、SAVEPOINT
declare
	vv mystudent%ROWTYPE;
begin
	begin;
	update mystudent set teachername = 'changan';
	select * into vv from mystudent where rownum < 2;
	commit;
end;
/
PL/SQL中的SELECT语句

为什么在这里单独把SELECT语句列出来了呢?因为与标准SELECT语句不同,在PL/SQL程序中,SELECT语句需要与INTO或BULK COLLECT INTO短语结合使用,将查询的结果保存到变量中。

  • SELECT … INTO :单条记录查询
  • SELECT … BULK COLLECT INTO : 多条记录查询

示例如下:

-- 示例1
create procedure shenlan
as
declare
	vid mystudent.id%TYPE;
	v mystudent%ROWTYPE;
begin
	select id into vid from mystudent where rownum < 2; -- 需要注意:SELECT ... INTO 语句只能查询一条记录的信息 
	raise notice 'vid is %', vid;
	select * into v from mystudent where rownum < 2;
	raise notice '(%,%,%)', v.id,v.name,v.teachername;
end;
/
-- 示例2
declare
  type c_cursor is ref cursor;
  type type_a is table of char(1) index by binary_integer;
  c_test c_cursor;
  v_a type_a;
begin
  open c_test for select * from dual where false;
  loop
    fetch c_test bulk collect into v_a;
      raise info 'v_a(1)=%',v_a(1);
    exit when c_test%notfound;
  end loop;
  raise info 'v_a=%',v_a;
  v_a.DELETE; -- delete Associative array
end;
PL/SQL中的DML语句

PL/SQL中的DML语句对标准SQL语句中的DML语句进行扩展,允许使用变量,语法与标准SQL完全相同。

-- 示例程序
declare  -- 声明部分
	v constant int default 100;
begin		-- 执行部分
	update myteacher set id = v where rownum < 2;
end;
/

更多请参考LightDB官网

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:50:33  更:2022-08-06 10:53:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 3:10:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码