如何从数据源调用存储过程:在处直接写存储过程的名字何参数即可,比如在sql server的northwind上创建返回单数据集的存储过程代码如下:
create procedure getEmployee
@empID int
as
select * from Employees
where EmployeeID>@empID
在cognos中的datasource中输入调用如下:
getEmployee 0
cognos可以自动探测到返回的列名以及类型,创建的build也可以正确抽取数据。
问题1:如果返回两个数据集如何处理?在northwind中多数据集的存储过程定义:
CREATE procedure listorders
@eid int
as
select * from orders
where employeeid>@eid
select * from customers
在cognos中的datasource中输入listorders 0只能够探测到返回的第一个数据集的字段名,但是实际运行buile时提示错误DS-DBMS-E401:UDA Driver error on connection 'northwind',不知有没有人遇到过这样的问题,应该如何解决。
问题2:存储过程中如果包含判断语句也会出问题。创建存储过程
CREATE procedure ColNotConformed
@eid int
as
IF @eid = 2
BEGIN
select * from orders
END
else
begin
select * from products
end
在cognos中的datasource中输入存储过程名集对应的参数总是返回第一个判断语句对应的返回的列名,并且生成的build执行也会有错误,无法抽取数据。
问题3:在cognos中的datasource中输入创建存储过程的语句会导致ds关闭