如何用ODBC的语法执行存储过程语法,返回输出参数

未得到作者允许请勿转载


在文章嘚开头做一个习惯性的介绍

本文从2002年11月开始写,基本上在2002年12月时完成当时本来作为一本书的一个章节,后来由于某些原因没有完成该書这段时间将本文内容进行了一些整理,放在网上希望能够给大家一些帮助

本文的内容主要是关于ODBC 的功能,所有内容都与ODBC /DB

}

版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/

在进行DB2应用开发之前了解DB2应用程序的结构,掌握相关概念设置开发环境是很必要的。本章主要介绍这几个方面的内容


作者在示例中说明了在 db2表中如何实现 jpg/gif 图像。

答:您用的是哪一种 C 编译器只有特定发行级别的特定编译器才受支持。如果为 Microsoft 嘚产品就仅仅为 V5 或 V6。我认为您的 VA C++ 发行版不是 3.6就是 4.0此外,还必须设置环境... 请参阅 DB2 UDB ReleaseNotes 中有关 SQL 存储过程语法的部分。必须设置两个环境变量

问:我有一个 VB3.0(16 位)程序,通过 ODBC API 调用来访问 DB2 6.1 for Windows NT当我试图在同一应用程序中打开两个连接时,ODBC 驱动程序似乎只对最后一个打开的连接有效例如:我打开第一个连接之后用不同的 ALIAS 打开第二个连接,然后在第一个连接中试图执行 SELECT 语句这时 ODBC 给我一条错误消息,说没有找到我在 SELECT 語句中引用的表
有人知道这是怎么回事吗?

答:您可以通过选择 UCASE(COL1) 或 LCASE(COL1)执行不区分大小写的 ORDER BY。但是即便是这种 ORDER BY 对于一个字符来说仍然是区汾大小写的也就是说,如果有“aaaa”和“AAAA”则执行 ORDER BY 时“aaaa”将排在前面。但是这种排序在任两个不同字符间是很管用的也就是说,如果囿“bbbb”和“AAAA”则在执行 ORDER BY 后“AAAA”将排在前面。

问:我在 Sun Solaris 5.6 中安装了 DB2我甚至还创建了数据库。我想在这个新数据库中创建一些用户并给予怹们特定的许可。为搜集信息我查遍了所有资料可是却找不到怎么做。如果有人肯告诉我怎么做我将感激不尽。
答:
在 DB2 数据库中不能創建用户只能通过操作系统的工具/命令(例如在 AIX 上用 mkuser)在 Solaris 对话框中创建用户。一旦在 UNIX 对话框中创建了用户就可以将 DB2 安全性挂接到 userid 上,通过 DB2 的安全机制控制对 DB2 对象的访问

问:DB2 可以通过某种方法将活动日志卸载到基于 GDG 的归档日志数据集吗?
答:
不可以归档日志是以封装方式定义并处理的。它不允许定义 GDG 基准您只能指定限定符。该限定符根据您在 ZPARMS 中的选择添加到唯一名称中

问:我想从 ODBC 管理员以系统 DSN 身份连接到我的一个外部 ODBC 数据库,提取表信息并将其存储到DB2数据库的一个 DB2表中
这样做可以吗?又该怎么做呢
答:
通过 ODBC/OleDB,可以用任何脚本語言程序如 VBScript、JScript 或 C 等来实现,所用程序取决于平台

问:我们正在存储过程语法日益增多的 DB2/OS390 环境中建立数据共享。在数据共享环境中存儲过程语法在何处运行?
是在开始调用存储过程语法的 DB2 中吗
还是在定义存储过程语法的 DB2 中呢?
还是在包含装载模块的装载库的存储过程語法地址空间中呢
或是在其他地方 而需要我留意吗?
如果存储过程语法访问非共享 DASD 上的 VSAM那又怎么办呢?

答:存储过程语法在存储过程語法地址空间或由 WLM 在启动该过程的 DB2 中建立的地址空间中运行

问:我们当前正在 9906(一个非数据共享环境)中运行 DB2 OS/390 V5,并且打算升级到版本 6
我原先计划订购并且使用 0002。但得知要对 March'00 进行更新的计划后就决定等一段时间。现在更新被推迟到五月份我还等吗?如果不等有谁能推荐┅个 较好的安装服务级别呢?
而且能直接从 9906 上的 V5 向版本 6 升级吗?您的意见呢
答:
要查明有关信息,最好阅读 Ver 6.0 的封面信函以及 IBMLINK 上的先决條件Hiper 9904 应当是正常的。我不清楚 hiper 9904 的衰退问题因为早期代码是兼容的。通常最好的办法是升级到当前发布的级别我建议至少升级到 9909。

问:我正在跨现有的表添加一个新的列(os/390 中的 DB2)现在我要在该列中装入一个值。到目前为止所有行都包含相同的值(比如‘abc’)。
我如哬才能装入该列...
b) 不必通过缺省值‘abc’定义该列
因为有一种可能性它可能还包含其他值,但到目前为止只得到‘abc’
能通过装入卡来解决該问题吗?
作为最后一种手段我正在考虑编写 REXX 实用程序来更改卸装的文件。您对此有何建议

问:db2move 只是一条命令还是一个独立的工具,峩如何使用它
答:
db2move 是一个工具,可使用它方便地在位于工作站中的 DB2 数据库之间移动大量的表该工具在系统编目表中查询特定的数据库、编译一个所有用户表的列表,然后将这些表以 PC/IXF 格式导出然后可以将 PC/IXF 文件导入或装入到 相同系统中的另一个本地 DB2 数据库,也可以传送到叧一个工作站平台并且导入或装入到该平台中的一个 DB2 数据库
从命令提示中键入 db2move 并且按 enter 键可查看该工具提供的不同选项。您还可以查阅命囹参考指南以获取有关 db2move 的详细资料

问:在 DB2“控制中心”中,我通过用鼠标右击一个数据库并且选择“Remove”而不是“Drop”意外地删除了它。現在我要通过相同的名称和/或别名创建一个新的数据库DB2 指示:
在本地数据库目录或系统数据库目录中已存在数据库别名“SALES_DB”。
我如何消除剩余的旧“SALES_DB” 数据库?

答:您只需右击数据库的图标选择 add。 然后选择“refresh”按钮选择您已经删除的数据库。 一旦添加它就可以删除。

問:我得到了分配给 DB2 的 4GB 内存但怀疑这是否需要缓冲池中的扩充存储器才能访问更多的该内存,即内存地址在 NT 中是限制为 2GB 还是 4GB

答:NT 通常呮允许非系统进程(包括 DB2)访问 2GB 的内存,而不管帧内是否有更多内存可用其他 2GB 被保留用于系统进程。因为 NT 的 32 位结构4GB 是您可以寻址的最高内存位置,这使得使用附加内存成为难题
添加到 BOOT.INI 中启动您的分区的行的结尾处。然后您可以使用附加的内存
DB2 V7 有一些新代码,允许 DB2 寻址 4GB 限制以上的内存

问:我们希望获得当前日期之后三个月的日期。我们能在 DB2 中做到吗在 Sybase 或 SQL 服务器中,有一个称为 DateAdd 的功效强大的函数

問:在 DB2 V6.1 中,表名和列名的最大长度是 30而关系名和索引名的最大长度是 18。这些最大值在 DB2 5.2 这样的旧版本中是相同的吗
答:
我认为这是非 OS/390 平囼的 V6.1 中的新增内容。在先前的版本(仍在 390 中)中表/视图和列的名称不能超过 18 个字符。在 V6.1 中表和视图名称的最大长度扩展到了 128 个字符,洏列名称的最大长度扩展到了 30 个字符

问:我可以从嵌入式 SQL 应用程序中成功运行存储过程语法,但不能从 ODBC/CLI 应用程序中运行它在这种情况丅,我遇到错误“dll could not be loaded”我使用 DB2/NT 6.1.0。

问:我能在 DB2 OS/390 中建立一个存储 Unicode 数据的表吗如何创建?支持它的最低 DB2 版本是多少
答:
DB2/390 直到 V7 才会支持 Unicode(V7 现在仍未进行 GA)。 我认为将要及早发布的功能不会是 PTF但对其列表进行检查可能是值得的。

问:我想询问关于大型机 DB2 的问题它通常是一个 peoplesoft / DB2 环境。
我怀疑有一些线程通过 AIX 中的 DB2 连接网关从 PC 客户机远程连接到数据库如果一个批处理作业(比如一个图像复制)在大型机上进行并且以 util 模式启动数据库,则这些与数据库连接的线程将要发生什么情况它们将隐藏在不一致状态中?在数据库中有活动时以 util 模式启动数据库會成功吗?来自客户机的线程在被取消之前将保持对于它们正在使用的资源的锁定吗


答:
当发出一条启动命令时,它通常立即生效因此当请求后续要求时,应用程序会收到一个 unavlbl 资源
star 根据您选择的约束模式耗尽所有要求。只对于 util它才立即耗尽所有要求。它不关心线程來自哪里所有线程的行为都相同。

问:我需要从多个数据库访问数据其中一个数据库具有 2000 万个客户机记录。我需要访问一些其他数据庫它们具有匹配的客户机标识和一些关于这些客户机的其他匹配信息。我的问题是 :
我如何使用单个 SQL 语句访问这些数据库
我需要创建 synomyms/alias 鉯完成该任务吗?有其他办法可以使用利用 SPUFI 或 QMF 的一条 SQL 语句来访问多个数据库吗我不倾向于使用程序来完成该操作。
我如何绑定从多个数據库中访问数据包我是说,什么是这类包的 qualifier/owner
答:
如果在大型机上,则您只能进行简单的连接请参阅 DB2 SQL 参考书以获取 Jion 的语法和规则。您朂多只能访问 15 个表/视图而不管它们是属于一个数据库还是多个数据库。
如果您在客户机服务器环境中的 DB2 UDB 中则没有任何捷途径。 请尝试使用别名即使这样,连接还可能不工作我未试过最新的 DB2 UDB LUNO 版本,因此不能提供明确的答案

答:是的,DB2 V7.1可以支持它

问:在 NT 的 UDB V6.1 中 - 遇到错誤,指示“SYSTEM” 没有执行命令的权限该权限 ID 未被使用,但不知何故“控制中心”却指示它正被使用有人知道这是怎么回事吗?

答:没关系 — “控制中心”的 JDBC 服务需要由具有本地 NT 管理员权限的本地 ID 来启动

问:我们在 10 个不同的 Windows NT 中大约安装了 10 个 websphere。所有这些 websohere 都指向一个 DB2/UDB它安装並运行在一个单独的 Windows NT 服务器上。该 DB2 服务器用于这些 websphere 的配置、会话跟踪等我希望知道是否有人知道有一些工具、硬件、软件可以监视 DB2 服务器并且可以在主要 DB2 服务器关闭时自动切换到后备 DB2 服务器。

答:您可以使用 NT 群集解决方案两个带有本地磁盘和一个 ServeRaid 这样的共享磁盘的 NT 机器。该 Raid 系统可以由 Win NT 的群集解决方案共享您在两个机器的本地磁盘上安装 DB2。在共享磁盘中创建一个 DB2 实例并将它添加到 NT 群集中然后在磁盘的該实例下创建您的 DB。DB 运行在这些机器的其中一台上如果一台机器失败,它可以在另一台机器上重新启动

问:我在 NT 服务器中安装了一个 DB2,并且想要在 NT 服务器中以同样方法另外配置 30 个 DB2有允许我执行此操作,而不必单独配置每个机器的工具或选项吗

当用户试图调用 UDF 时,接收到下列 DB2 错误消息

此问题可能在路径太长的时候发生。

这个过程是不可以逆转的所以在安装前,请先确定您和客户的计划

}

我要回帖

更多关于 存储过程语法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信