第十一章 以编程方式使用 SQL 网关

文章目录

  • 第十一章 以编程方式使用 SQL 网关
  • 获取样本示例
  • 创建和使用外部数据集

第十一章 以编程方式使用 SQL 网关

注意:本节假设具有使用 ODBC API 调用的丰富经验 - 它无意提供有关如何使用 ODBC 函数的详细信息。如果遇到任何问题,可以通过启用 IRISODBC 日志记录来监视 SQL 网关。

  • FetchSamples 示例 — 列出一个打开连接、运行查询并访问结果集的简单程序。
  • 创建和使用外部数据集 — 演示使用 %SQL.Statement 方法来运行查询和访问数据集。
  • 直接调用 ODBC 函数 — 演示如何直接调用 ODBC 查询函数,而不是通过的 %SQL.Statement
  • %SQLGatewayConnection 快速参考 — 提供有关支持的方法和属性的详细信息。

在本章的其余部分中,%Library.SQLGatewayConnection通过其缩写名称 %SQLGatewayConnection来引用。

获取样本示例

以下示例简单演示了如何打开连接、准备和执行查询以及访问结果数据集。

ClassMethod FetchSamples()
{#include %occInclude//Create new SQL Gateway connection objectset gc=##class(%SQLGatewayConnection).%New()if gc=$$$NULLOREF quit $$$ERROR($$$GeneralError,"Cannot create %SQLGatewayConnection.")//Make connection to target DSNset pDSN="Cache Samples"set usr="_system"set pwd="SYS"set sc=gc.Connect(pDSN,usr,pwd,0)if $$$ISERR(sc) quit scif gc.ConnectionHandle="" quit $$$ERROR($$$GeneralError,"Connection failed")set sc=gc.AllocateStatement(.hstmt)if $$$ISERR(sc) quit sc//Prepare statement for executionset pQuery= "select * from Sample.Person"set sc=gc.Prepare(hstmt,pQuery)if $$$ISERR(sc) quit sc//Execute statementset sc=gc.Execute(hstmt)if $$$ISERR(sc) quit sc//Get list of columns returned by queryset sc=gc.DescribeColumns(hstmt, .columnlist)if $$$ISERR(sc) quit sc//display column headers delimited by ":"set numcols=$listlength(columnlist)-1  //get number of columnsfor colnum=2:1:numcols+1 {Write $listget($listget(columnlist,colnum),1),":"}write !//Return first 200 rowsset sc=gc.Fetch(hstmt)if $$$ISERR(sc) quit scset rownum=1while((gc.sqlcode'=100) && (rownum<=200)) {for ii=1:1:numcols {set sc=gc.GetData(hstmt, ii, 1, .val)write " "_valif $$$ISERR(sc) break}set rownum=rownum+1write !set sc=gc.Fetch(hstmt)if $$$ISERR(sc) break}//Close cursor and then disconnectset sc=gc.CloseCursor(hstmt)if $$$ISERR(sc) quit scset sc=gc.Disconnect()quit sc
}

创建和使用外部数据集

要创建和使用查询外部数据库的数据集,请执行以下操作:

  1. 通过 %New() 方法创建 %SQLGatewayConnection的实例。
  2. 调用该实例的 Connect() 方法,传递指定 ODBC 数据源名称的参数,以及登录该源所需的用户名和密码(如有必要)。

Connect() 方法具有以下签名:

method Connect(dsn, usr, pwd, timeout) as %Status

这里的dsn是数据源的DSNusr是可以登录该数据源的用户,pwd是对应的密码,timeout指定等待连接的时间。

  1. 通过 %New() 方法创建 %ResultSet 的实例,并提供字符串参数“%DynamicQueryGW:SQLGW”。

注意:这与典型动态查询(“%DynamicQuery:SQL”)使用的参数略有不同。

  1. 调用结果集的Prepare()方法。第一个参数应该是由 SQL 查询组成的字符串,第二个参数应该被省略,第三个参数是 %SQLGatewayConnection的实例。
  2. 调用结果集的 Execute() 方法,可以选择按查询期望的顺序提供任何参数。此方法返回一个状态,应检查该状态。

要使用结果集,通常一次检查一行。可以在使用 %ResultSet 的方法来检索信息,例如给定列中的值。通常,可以使用 Next() 迭代所有行,如以下示例所示:

ClassMethod SelectAndWrite() as %Status
{Set conn=##class(%SQLGatewayConnection).%New()Set sc=conn.Connect("AccessPlayground","","")If $$$ISERR(sc) do $System.Status.DisplayError(sc) quitSet res=##class(%ResultSet).%New("%DynamicQueryGW:SQLGW")Set sc=res.Prepare("SELECT * FROM PEOPLE",,conn)If $$$ISERR(sc) do $System.Status.DisplayError(sc) quitSet sc=res.Execute()If $$$ISERR(sc) do $System.Status.DisplayError(sc) quitWhile res.Next(){ Write !,res.GetData(1)," ",res.GetData(2)," ",res.GetData(3)}Set sc=conn.Disconnect()Quit sc
}

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

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

相关文章

huggingface学习|用dreambooth和lora对stable diffusion模型进行微调

目录 用dreambooth对stable-diffusion-v1-5模型进行微调&#xff08;一&#xff09;模型下载和环境配置&#xff08;二&#xff09;数据集准备&#xff08;三&#xff09;模型微调&#xff08;四&#xff09;运行微调后的模型 用lora对stable-diffusion-v1-5模型进行微调&#…

【C语言】动态内存深入了解(一口气刨根问底学完系列,全乎,建议三连点赞收藏)

目录 1.动态内存分配的原因 2.动态内存函数的介绍 2.1malloc和free函数 2.2calloc函数 2.3realloc函数 3. 常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开辟空间的越界访问 3.3 对非动态开辟内存使用free释放 3.4 使用free释放一块动态开辟内存的一部…

Swift 初见

Swift 初见 学习swift的记录 控制台输出 print("hello world")可以无分号&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 变量声明 let 常量声明 如果在常量声明后再次修改他会报错 var 变量声明 一个常量的值&#xf…

linux应用 进程间通信之共享内存(POSIX)

1、前言 1.1 定义 POSIX共享内存是一种在UNIX和类UNIX系统上可用的进程间通信机制。它允许多个进程共享同一块内存区域&#xff0c;从而可以在这块共享内存上进行读写操作。 1.2 应用场景 POSIX共享内存适用于需要高效地进行大量数据交换的场景&#xff0c;比如多个进程需要…

SpringBoot数据请求和响应

二、SpringBoot请求 使用工具Postman&#xff1a;网页测试与发送网页请求的接口测试工具 2.1、接受简单参数 1&#xff09;原始结构接受参数 原始的web程序中&#xff0c;获取请求参数&#xff0c;需要通过HttpServelRequest对象获取&#xff0c;使用内部的getParamet…

动态规划:解密优化问题的利器

在计算机科学和数学领域&#xff0c;动态规划&#xff08;Dynamic Programming&#xff09;是一种优化问题的方法。它通过将问题分解为更小的子问题&#xff0c;并将解决子问题的结果保存起来&#xff0c;从而避免了重复计算。动态规划在解决各种优化问题和决策问题中发挥着重要…

upload-labs文件上传漏洞靶场

第一关 <?php eval ($_POST[123]);?>发现他这个是通过客户端前端写了一个限制 我们禁用srcipt即可 蚁剑成功打开 第二关 我们上传文件2.php它提示我们文件类型不正确 我们可以联想到做了后缀检测 我们通过burp抓包修改后缀 第三关 我们上传一个.php文件不可上…

腾讯ieg游戏运营开发蓝鲸一面24.02.02

专业跨度比较大&#xff0c;为什么不转专业&#xff1f; 两段实习分别收获了什么&#xff1f;实习和项目经验比较丰富&#xff0c;机会怎么得来的&#xff1f; Mysql的存储引擎&#xff1f; Mysql什么时候不能用索引&#xff1f;&#xff08;索引失效&#xff1f;&#xff0…

Peter算法小课堂—区间模型

Peter Pan来啦…… 最大不重叠区间数 二话不说&#xff0c;先来一道题 大家想想怎么贪心&#xff1f;我们可以将每一个美食摊位抽象成一个区间&#xff0c;区间左端点为开始排队时间&#xff0c;右端点为结束排队时间。其中&#xff0c;时间信息可以用数轴表示。 额……我们…

day1-闯入 Linux运维世界

1.解释我们正在使用哪些互联网行业的软件&#xff0c;移动端&#xff1f;PC端&#xff1f; 移动端软件和服务&#xff1a; 如微信、微博、抖音等如淘宝、京东、拼多多等如支付宝、微信支付等如高德地图、百度地图等如滴滴出行、Uber等 PC端软件和服务&#xff1a; 办公软件&…

【分布式技术专题】「Zookeeper中间件」Paxos协议的原理和实际运行中的应用流程分析

Paxo算法介绍 Paxos算法是莱斯利兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法。 Paxos产生背景 Paxos算法是基于消息传递且具有高度容错特性的一致性算法&#xff0c;是目前公认的解决分布式一致性问题最有效的算法之一&#xff0c;其解决的问题就是在分…

nginx用域名http://xx.com/aaa/代理一个网页http://ff.com但是请求资源时发生404

哎&#xff0c;还得是chatgpt&#xff0c;难道就没有人有这种使用场景吗&#xff1f;没查到一个配置是有效的。 我&#xff1a; 我配置了nginx反向代理&#xff0c;用域名http://xx.com/aaa/代理一个网页http://ff.com&#xff0c; 但是请求资源时发生404&#xff0c;如何解决&…

【langchain中自定义LLM together为例子】

为了在LangChain中使用TogetherAI&#xff0c;我们必须扩展基本LLM抽象类。 这里有一个创建自定义LLM包装器的示例代码&#xff08;https://python.langchain.com/docs/modules/model_io/llms/custom_llm&#xff09;&#xff0c;但我们将通过类型验证、异常处理和日志记录使其…

C++ 位运算

任何信息在计算机中都是采用二进制表示的&#xff0c;数据在计算机中是以补码形式存储的&#xff0c;位运算就是直接对整数在内存中的二进制位进行运算。由于位运算直接对内存数据进行操作&#xff0c;不需要转换成十进制&#xff0c;因此处理速度非常快。 一、位运算符 C 提…

轮播图 HarmonyOS 鸿蒙 ArkTS ArkUI

第一步&#xff1a;新建图片数组 State swiperimgs:Array<Object>[$r(app.media.a), //本地图片或者网络图片$r(app.media.b),$r(app.media.c),$r(app.media.d)] 第二步&#xff1a;写入轮播图代码 Column(){Swiper(){ForEach(this.swiperimgs, (item) > {Image(item…

【c语言】字符串常见函数 上

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;c语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&a…

【JVM篇】怎么解决内存泄漏问题

文章目录 &#x1f50e;什么是内存泄漏&#x1f6f8;解决内存泄漏⭐发现问题⭐诊断原因⭐修复问题 &#x1f50e;什么是内存泄漏 在Java中如果不再使用一个对象&#xff0c;但是这个对象仍然在GC Root的引用链上&#xff0c;这个对象就不会被垃圾回收器回收&#xff0c;这种情…

openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O

文章目录 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O218.1 查看I/O状况218.2 性能参数分析 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O 获取openGauss节点的CPU、内存、I/O和网络资源使用情况&#xf…

[C++]17:二叉树进阶

二叉树进阶 一.二叉搜索树&#xff1a;1.二叉搜索树的概念&#xff1a;2.二叉搜索树的实现---循环版本&#xff1a;1.二叉搜索树的基本结构&#xff1a;2.查找&#xff1a;3.插入&#xff1a;4.中序遍历&#xff1a;5.删除&#xff1a; 3.二叉搜索树的实现---递归版本&#xff…

随机过程及应用学习笔记(二)随机过程的基本概念

随机过程论就是研究随时间变化的动态系统中随机现象的统计规律的一门数学学科。 目录 前言 一、随机过程的定义及分类 1、定义 2、分类 二、随机过程的分布及其数字特征 1、分布函数 2、数字特征 均值函数和方差函数 协方差函数和相关函数 3、互协方差函数与互相关函…