我有一个查询(针对 Postgres 和 Informix),其中NOT IN
包含一个子查询,该子查询在某些情况下返回NULL
值,导致该子句(以及整个查询)无法返回任何内容。
理解这一点的最佳方式是什么?我认为NULL
没有价值的东西,因此不希望查询失败,但显然这不是考虑NULL
.
代表什么NVL
?我说的是 Oracle 和 Informix(也许还有其他一些)函数用于从查询结果中过滤掉非 NULL 值(类似于COALESCE
其他数据库)。
我正在使用informix...
我不知道我是怎么做到的,但是我的数据库中有两个同名的过程。当我尝试用
DROP PROCEDURE myProc;
Run Code Online (Sandbox Code Playgroud)
然后我收到一条错误消息
ERROR: Routine (add_adr_trigger_row) ambiguous - more than one
routine resolves to given signature.
Error Code: -9700
Run Code Online (Sandbox Code Playgroud)
我怎样才能放弃这些程序?
经过大约 3 天的尝试,我无法创建从 SQL Server 2016 到 Informix 11.5 的链接服务器。我没有在其他版本(2008R2 等)上尝试过这个,因为我想先在测试环境中设置连接。
我做了什么
1) 将 IBM Informix指令与 OLE DB 提供程序一起使用,在其中我收到以下错误(无论我是否在提供程序字符串中使用 DNS):
无法为链接服务器“UCCX”初始化 OLE DB 提供程序“Ifxoledbc”的数据源对象。链接服务器“UCCX”的 OLE DB 提供程序“Ifxoledbc”返回消息“EIX000: (-23197)”数据库区域设置信息不匹配”(Microsoft SQL Server,错误:7303)
DB Locale 是 en_US.57372
2)如本博客所述,使用 Microsoft OLE DB Provider for SQL Server返回错误:
命名管道提供程序:无法打开与 SQL Server 的连接。链接服务器 UCCX 的 OLE DB 提供程序 SQLNCLI11 返回消息“登录超时已过期” 链接服务器 UCCX …
在典当行业务中,客户典当、出售或购买物品。每当客户典当、出售或购买物品时,就会创建一份指定客户信息、物品以及条款和条件的合同。
每个合同最多允许 6 个项目。如果超过 6 个,则必须将它们拆分为单独的合同。此限制的原因是因为每个打印表格只能存在一个唯一的合同。该表单为 8.5 x 5.5 英寸(半页大小),因此每个表单上只能容纳 6 个项目描述。从法律上讲,我们不能为同一份合同提供第 1 页(共 2 页)。
属于合同的所有项目都分配有批次序列号。这个批号也恰好是合同号。无论是典当、买卖合约,手数都会增加。每种类型的合同都将维护自己的收据序列号。可视化一个单独的典当合同垫,右上角有一个收据编号,一个单独的购买垫和一个单独的销售垫。
买卖是最终的!
但是,客户可以为其活跃的典当支付利息,在这种情况下,客户向收银员提供其原始收据的副本以及利息支付。然后,针对相同的典当物品(即具有相同的批号)发出新的收据,显示新的到期日,而原始或之前的收据被取消并被收银员归档。
当客户赎回他们的典当时,不会发出新的收据。顾客在收据上签字,说当典物品已退还给他们,收据被收银员取消并归档。
当其他客户典当物品或支付利息时,新的收据被写入并提供给客户。
编辑:如果典当行不为每笔利息支付提供新的收据,而只是用支付利息的日期、金额和新的到期日更新原始合同,那么我们就不会出现并发症!但是,我们有一个典当收据编号,有时会增加,有时不会增加,这取决于对每个典当进行的交易类型。
以下是一段时间内典当交易的示例:
CUSTOMER TRANSACTION DATE/TIME TRANSACTION TYPE RECEIPT#
-------- --------------------- ---------------- --------
Frank Oct-28-2012, 9:00 am New Pawn, Lot#501 P12345
Mark Oct-28-2012, 9:05 am New Pawn, Lot#502 P12346
Jeff Oct-28-2012, 9:20 am New Pawn, Lot#503 P12347
...
(several other new pawns, which increment the lot and receipt numbers, and
interest payments which only increment the receipt numbers.)
Mark Nov-26-2012, …
Run Code Online (Sandbox Code Playgroud) Informix 11.70.TC4DE:
CREATE TABLE cluster_tbl
(
fk_id INT,
data CHAR(2048)
);
LOAD FROM "presorted.ld" INSERT INTO cluster_tbl;
CREATE UNIQUE CLUSTER INDEX cl_idx ON cluster_tbl(fk_id);
Run Code Online (Sandbox Code Playgroud)
{###}
CREATE TABLE noncluster_tbl
(
fk_id INT,
data CHAR(2048)
);
LOAD FROM "presorted.ld" INSERT INTO noncluster_tbl;
CREATE UNIQUE INDEX ncl_idx ON noncluster_tbl(fk_id);
Run Code Online (Sandbox Code Playgroud)
{###}
UPDATE STATISTICS;
Run Code Online (Sandbox Code Playgroud)
我的理解是,集群索引本质上与对加载文件进行预排序、将其插入表中并为外键列创建索引相同。
我创建了两个表,每个表都加载了 200 万行相同的数据,并按外键预先排序。但是,一个表在 fk_id 上有一个聚簇索引,另一个表在 fk_id 上有一个非聚簇索引。
与具有非集群索引的相同表/数据相比,在维护或访问具有集群索引的表中的数据时,树结构或额外开销是否有任何差异?
我有一个 Informix 数据库和一个 Microsoft SQL Server 2016。我的任务是转储整个 Informix 数据库并将其导出到 Microsoft SQL Server 数据库。我安装了 Informix SDK 4.5。我还安装了 32 位/64 位的 ODBC 驱动程序。连接工作正常。
我在 中链接了 Informix 服务器Microsoft SQL Server Management Studio
,但无法获取表信息,因此我在 IBM 文档中找到了解决方法。
现在我想尝试使用Import and Export Data (64-bit)
. 我选择了数据源作为IBM Informix OLE DB Provider
数据目的地是 SQL Server Native Client 11.0
作为测试导出,我选择了一些表。表映射对我来说很好
下一步显示了错误的类型转换,但我不知道为什么。
然后我 Run immediatly
[Source Information]
Source Location : sospos@sosposdbtest
Source Provider : Ifxoledbc.4
Cannot locate the mapping file to map the provider types to SSIS types …
Run Code Online (Sandbox Code Playgroud) IBM Informix 动态服务器版本 11.50.UC5XA。
我有一个 Informix 数据库。该数据库包含一个名为“sp_agent_details”的存储过程,它获取两个日期时间参数。该存储过程产生大约 27 列,我只需要其中的几列用于报告。我尝试这个语法:
select AGENT_NAME, AGENT_LOGIN_ID from
TABLE(sp_agent_detail('2014-02-04 04:00:00', '2014-02-04 23:00:00'))
Run Code Online (Sandbox Code Playgroud)
结果出现这样的错误:
java.sql.SQLException: Illegal SQL statement in SPL routine.
Run Code Online (Sandbox Code Playgroud)
接下来我尝试这个语法:
select AGENT_NAME, AGENT_LOGIN_ID from
TABLE(MULTISET{sp_agent_call_summary
('2014-02-04 04:00:00', '2014-02-04 23:00:00')})
Run Code Online (Sandbox Code Playgroud)
结果:
java.sql.SQLException: Function (informix.sp_agent_call_summary)
returns too many values.
Run Code Online (Sandbox Code Playgroud)
然后我尝试了这个:
select AGENT_NAME, AGENT_LOGIN_ID from
TABLE(sp_agent_detail('2014-02-04 04:00:00', '2014-02-04 23:00:00'))
(AGENT_NAME, AGENT_LOGIN_ID, other columns that are returned by SP)
Run Code Online (Sandbox Code Playgroud)
结果:
java.sql.SQLException: Illegal SQL statement in SPL routine.
Run Code Online (Sandbox Code Playgroud) 我们正在将 Informix 数据库迁移到 Oracle。请帮助我们使用查询从 Informix 元数据中提取同义词和序列。
informix ×10
sql-server ×2
datatypes ×1
export ×1
functions ×1
index ×1
null ×1
oracle ×1
postgresql ×1
query ×1