Stored procedures iReport执行存储过程在Informix中无法正常工作
我想知道如何使用Informix DB连接从iReport调用存储过程。如果我执行一个简单的Stored procedures iReport执行存储过程在Informix中无法正常工作,stored-procedures,jasper-reports,informix,ireport,Stored Procedures,Jasper Reports,Informix,Ireport,我想知道如何使用Informix DB连接从iReport调用存储过程。如果我执行一个简单的select操作,则可以毫无问题地检索所有列 现在,我必须处理一些从存储过程中检索的数据。为了测试如何执行此操作,我制作了一个样本SP,如下所示: CREATE PROCEDURE sp_example() RETURNING VARCHAR(100), INTEGER; RETURN 'some varchar', 100; END PROCEDURE; 这可以编译,我可以从我的SQL编辑器执
select
操作,则可以毫无问题地检索所有列
现在,我必须处理一些从存储过程中检索的数据。为了测试如何执行此操作,我制作了一个样本SP,如下所示:
CREATE PROCEDURE sp_example() RETURNING VARCHAR(100), INTEGER;
RETURN 'some varchar', 100;
END PROCEDURE;
这可以编译,我可以从我的SQL
编辑器执行它。当我想从iReport检索数据时,问题来了,我只得到第一个返回值('some varchar'
),而不是第二个,如屏幕截图所示:
我错过了什么
我的Informix版本是Informix Dynamic Server 2000 9.21.TC4。除了调用存储过程的软件之外,您可能没有遗漏任何东西。您可以尝试将
RETURNING
子句更改为返回VARCHAR(100)作为名称,整数作为数字代码>,从而为“列”提供明确的名称。通过将字符串显示为name
而不是(表达式)
,将数字显示为number
而不是另一个(表达式)
,这可能会改变情况,希望情况会更好。或者这可能没有任何区别。我已经尝试过了,但是Informix似乎不允许在返回变量时使用别名,当检查将VARCHAR(100)返回为name
时,它在AS
单词中给了我一个语法错误(同样name
是Informix中的一个保留单词,应该是my_VARCHAR
或类似的东西)Re:‘保留字’-是的,可能不是,但大部分是否。也就是说,你可以做一些古怪的事情,比如创建表(整数十进制不为NULL,整数不为NULL)代码>在Informix中,因为当关键字在上下文中没有意义时,它会尝试将关键字视为标识符。好提示,但仍然不起作用:p您连接到哪个版本的Informix?我可以创建create PROCEDURE sp_example(),返回VARCHAR(100)作为名称,整数作为数字;返回'some varchar',100;结束程序代码>在Mac上成功使用12.10.FC4,在11.70中也可以使用。AS name
符号是最近添加的,因此它可能不在11.50或11.10或10.00或9.40中…但我认为它是在10.00时代添加的,因此您仍在运行的任何东西都应该支持它。除了调用存储过程的软件之外,您可能没有遗漏任何东西。您可以尝试将RETURNING
子句更改为返回VARCHAR(100)作为名称,整数作为数字代码>,从而为“列”提供明确的名称。通过将字符串显示为name
而不是(表达式)
,将数字显示为number
而不是另一个(表达式)
,这可能会改变情况,希望情况会更好。或者这可能没有任何区别。我已经尝试过了,但是Informix似乎不允许在返回变量时使用别名,当检查将VARCHAR(100)返回为name
时,它在AS
单词中给了我一个语法错误(同样name
是Informix中的一个保留单词,应该是my_VARCHAR
或类似的东西)Re:‘保留字’-是的,可能不是,但大部分是否。也就是说,你可以做一些古怪的事情,比如创建表(整数十进制不为NULL,整数不为NULL)代码>在Informix中,因为当关键字在上下文中没有意义时,它会尝试将关键字视为标识符。好提示,但仍然不起作用:p您连接到哪个版本的Informix?我可以创建create PROCEDURE sp_example(),返回VARCHAR(100)作为名称,整数作为数字;返回'some varchar',100;结束程序代码>在Mac上成功使用12.10.FC4,在11.70中也可以使用。AS name
符号是最近添加的,因此它可能不在11.50或11.10或10.00或9.40中……但我认为它是在10.00时代添加的,所以您仍在运行的任何东西都应该支持它。