第三十七章 持久对象和SQL

文章目录

  • 第三十七章 持久对象和SQL
  • 简介
  • SQL
    • 从 `ObjectScript` 使用 `SQL`
    • 从 `Python` 使用 `SQL`
    • SQL 的对象扩展

第三十七章 持久对象和SQL

简介

IRIS 是一个与面向对象编程语言相结合的多模型数据平台。因此,可以编写灵活的代码来执行以下所有操作:

  • 通过 SQL 执行批量插入数据。
  • 打开一个对象,对其进行修改并保存,从而无需使用 SQL 即可更改一个或多个表中的数据。
  • 创建并保存新对象,将行添加到一个或多个表中,而无需使用 SQL
  • 使用 SQL 从记录中检索与给定条件匹配的值,而不是迭代大量对象。
  • 删除对象,即在不使用 SQL 的情况下从一个或多个表中删除记录。

也就是说,可以随时选择适合需要的访问模式。

在内部,所有访问都是通过直接Global访问完成的,也可以在适当的时候以这种方式访问的数据。 (如果有类定义,则不建议使用直接Global访问来更改数据。

SQL

还可以直接在 SQL Shell(在终端中)和管理门户中执行 SQL。其中每个都包含一个用于查看查询计划的选项,它可以帮助确定提高查询效率的方法。

SQL 支持完整的入门级 SQL-92 标准,但有一些例外和一些特殊扩展。 SQL 还支持索引、触发器、BLOB 和存储过程(这些是典型的 RDBMS 功能,但不是 SQL-92 标准的一部分)。

ObjectScript 使用 SQL

可以使用以下一种或两种方式从 ObjectScript 执行 SQL

动态 SQL%SQL.Statement%SQL.StatementResult 类),如下例所示:

 SET myquery = "SELECT TOP 5 Name, DOB FROM Sample.Person"SET tStatement = ##class(%SQL.Statement).%New()SET tStatus = tStatement.%Prepare(myquery)SET rset = tStatement.%Execute()DO rset.%Display()WRITE !,"End of data"

可以在 ObjectScript 方法和例程中使用动态 SQL

  • 嵌入式SQL,如下例所示:
 &sql(SELECT COUNT(*) INTO :myvar FROM Sample.Person)IF SQLCODE<0 {WRITE "SQLCODE error ",SQLCODE," ",%msg  QUIT}ELSEIF SQLCODE=100 {WRITE "Query returns no results"  QUIT}WRITE myvar

可以在 ObjectScript 方法和例程中使用嵌入式 SQL

Python 使用 SQL

可以使用以下一种或两种方式从 Python 执行 SQL

  • 可以直接执行SQL查询,如下例所示:
import iris
rset = iris.sql.exec("SELECT TOP 5 Name, DOB FROM Sample.Person") 
for row in rset:print(row)

也可以先准备 SQL 查询,然后执行它,如下例所示:

import iris
statement = iris.sql.prepare("SELECT TOP 5 Name, DOB FROM Sample.Person")
rset = statement.execute()
for row in rset:print(row)

可以使用这两种方法之一在 Python 终端或 Python 方法中执行 SQL 查询。

SQL 的对象扩展

为了更轻松地在对象应用程序中使用 SQLIRIS 包含了许多 SQL 对象扩展。

这些扩展中最有趣的功能之一是能够使用隐式连接运算符 (–>)(有时称为“箭头语法”)跟踪对象引用。例如,假设有一个 Vendor 类,它引用另外两个类:ContactRegion。可以使用隐式连接运算符引用相关类的属性:

SELECT ID,Name,ContactInfo->Name
FROM Vendor
WHERE Vendor->Region->Name = 'Antarctica'

当然,也可以使用 SQL JOIN 语法表达相同的查询。隐式连接运算符语法的优点是简洁,一目了然。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【yolov5】detect.py

执行方法: 代码 # YOLOv5 &#x1f680; by Ultralytics, AGPL-3.0 license """ Run YOLOv5 detection inference on images, videos, directories, globs, YouTube, webcam, streams, etc.Usage - sources:$ python detect.py --weights yolov5s.pt --source …

深度学习在视频直播美颜sdk中的应用

视频直播美颜SDK是一类用于实时视频美颜处理的工具包&#xff0c;它们利用深度学习算法来提高视频直播中的主播和观众的外观吸引力。本文将深入探讨深度学习在视频直播美颜sdk中的应用&#xff0c;以及这些应用对直播行业的重要性。 一、人脸检测与关键点定位 通过卷积神经网…

Go语言数据类型实例讲解 - Go语言从入门到实战

Go语言数据类型实例讲解 - Go语言从入门到实战 基础数据类型 bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte rune float32 float64 complex64 complex128类型描述bool布尔型&#xff08;bool&#xff09;&#xff1a;可以是true或f…

Unity之Hololens如何实现3D物体交互

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

2023-油猴(Tampermonkey)脚本推荐

2023-油猴&#xff08;Tampermonkey&#xff09;脚本推荐 知乎增强 链接 https://github.com/XIU2/UserScript https://greasyfork.org/zh-CN/scripts/419081 介绍 移除登录弹窗、屏蔽首页视频、默认收起回答、快捷收起回答/评论&#xff08;左键两侧&#xff09;、快捷回…

[PowerQuery] PowerAutoMate 刷新PowerBI 数据

通过PowerBI Automate 进行PowerBI 数据刷新之前,需要有Power Automate 授权或者Power Automate 试用账户,可以通过如下的地址进行申请注册。 https://flow.microsoft.com/zh-cn/ 完成Power Automate 登录之后,选中计划的云端流后创建,图为创建计划的云端流的操作步骤。 …

MinDoc v0.4:轻量级文档在线管理系统

导读SmartWiki 是基于 PHP 框架 laravel 开发的一款文档管理系统。因 PHP 的部署对普通用户来说太复杂&#xff0c;所以改用 Golang 开发。可以方便用户部署和实用。 MinDoc 是一款针对IT团队开发的简单好用的文档管理系统。MinDoc 的前身是 SmartWiki 文档系统。开发缘起是公…

redis做缓存(cache)

什么是缓存 缓存(Cache)的核心思路就是把一些常用的数据放到访问速度更快的地方&#xff0c;方便获取。关于硬件的访问速度来说 CPU寄存器>内存>硬盘>网络 因此常见使用内存作为硬盘的缓存&#xff0c;例如redis。使用硬盘作为网络的缓存&#xff0c;例如浏览器通过h…

数据库原理与分析实验三

目录 1、实验目的 2、实验预习与准备 3、实验内容及步骤 本博客为数据库课布置的实验二的作业。 1、实验目的 &#xff08;1&#xff09; 掌握Select子句的功能和检索数据的方法 &#xff08;2&#xff09; 掌握对查询结果排序的方法 2、实验预习与准备 &#xf…

通信协议:Uart的Verilog实现(上)

1、前言 调制解调器是主机/设备与串行数据通路之间的接口&#xff0c;以串行单比特格式发送和接收数据。它也被称为通用异步收发器(Uart, Universal Asynchronous Receiver/Transmitter)&#xff0c;这表明该设备能够接收和发送数据&#xff0c;并且发送和接收单元不同步。 本节…

【re】BUUCTF Java逆向解密

题目&#xff1a;BUUCTF Java逆向解密 没壳&#xff0c;是java文件&#xff08;大概&#xff09; ida打开看不懂&#xff0c;找了网页上的java反编译 Decompiler.com 没用过java啊…暂且用sublime打开 还好还挺好懂的 import java.util.ArrayList; import java.util.Scanner;p…

【Spring MVC】Spring MVC如何处理跨域请求(CORS)

文章目录 1. Spring MVC如何处理跨域请求呢2. Spring MVC处理CORS的几个组件2.1. CorsFilter2.2. CrossOrigin 前言&#xff1a;请了解什么是CORS&#xff08;跨域&#xff09; 参考&#xff1a;https://gitee.com/firefish985/article-list/tree/master/Spring/Spring Web MVC…

Java开发需要的网络基础知识,搞清楚计算机网络底层原理

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有需要我的支持&#xff0c;请私信或评论留言&#xff01; 前言 计算机基础是…

手机基带芯片往事

手机基带芯片往事 手机基带芯片往事-虎嗅网 5G手机芯片简史-虎嗅网

Oracle拉链表

目录 -- 准备一个拉链表 -- 2.将所有的数据 同步到拉链表中 TEST_TARGET中 --3. 源表的数据发生了变化 --4. 将新增和修改的数据同步到拉链表 -- 开链的过程 -- 判断源表和目标表的数据,不同数据插入 --5. 修改拉链表中失效的时间和状态(将原本的开链时间,改为当前时间)-- …

怎样提高外贸业务销售能力

怎样提高外贸业务销售能力 一、市场分析与研究1. 了解目标市场&#xff1a;2. 收集客户信息&#xff1a; 二、产品知识和差异化竞争1. 熟悉产品&#xff1a;2. 差异化竞争&#xff1a; 三、制定销售策略和计划1. 制定销售计划&#xff1a;2. 销售策略&#xff1a; 四、谈判技巧…

【插件】页面引导库driver.js:

文章目录 一、效果图:二、实现思路:三、实现代码:【1】Driver.js 的技术特性【2】安装依赖【3】代码实现【4】 配置相关参数 一、效果图: 二、实现思路: 【官网】https://driverjs.com/docs/installation 【npm】https://www.npmjs.com/package/driver.js 【案例】改造driver.j…

HAProxy Data Plane API 实现对 haproxy 的配置管理

文章目录 前言一、安装1. 下载HAProxy Data Plane API2. 创建 Data Plane API 配置文件 /etc/haproxy/dataplaneapi.hcl3. 修改haproxy的配置文件 二、简单使用1. 查询请求2. 提交修改请求 总结 前言 我们平时对 haproxy 配置的修改&#xff0c;往往是 SSH 连接进去节点&#…

C++之std::function类模板定义函数对象应用总结(二百三十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

C#流Stream与IO详解(4)——如何更快的读写文件

【前言】 在我们追求更快读写速度时&#xff0c;通常都是为了读写二进制文件&#xff0c;而不是文本文件&#xff0c;所以这里只说FileStream、BinaryReader、BinaryWriter的使用。 从前文的源码解读中能看到使用BinaryReader和BinaryWriter进行IO读写时本质还是调用了FileSt…