【发布时间】:2016-01-18 13:56:48
【问题描述】:
我正在尝试从另一个存储过程调用一个存储过程。 我尝试了不同的语法,但没有成功。
第一个存储过程返回一个表。对于测试,我只想从第二个存储过程返回我从第一个存储过程中得到的内容。
第一个存储过程(SP01):
BEGIN
DECLARE C2 CURSOR WITH RETURN FOR
SELECT DISTINCT TBL.*
FROM LIB.TABLE1 TBL;
OPEN C2 ;
END
从 c# 调用时它工作正常。
第二个存储过程(SP02):
BEGIN
DECLARE C2 CURSOR WITH RETURN FOR
CALL SP01();
OPEN C2 ;
END
我收到一个错误:
供应商代码:-104
消息:[SQL0104] 令牌 SP01 无效。有效标记:;。原因 ....
在令牌 SP01 处检测到语法错误。
SP02 的正确语法/方法是什么?
已编辑:
在 ms 访问中,我能够基于另一个查询 QUERY1 创建一个查询 QUERY2:
SELECT * FROM QUERY1;
甚至像桌子一样加入它
SELECT * FROM TABLE1 INNER JOIN QUERY1 ON (TABLE1.FIELD1 = QUERY1.FIELD1);
我需要将我的所有表和查询从 mdb 移动到 AS400 并编写一个使用这些查询的 C# 应用程序。
我在网上没有看到这么多例子,也许我的方法是错误的。 我有多个查询要运行,每个查询都依赖于另一个查询。我想从我的 C# 应用程序调用一个存储过程,这个存储过程将调用另一个存储过程,依此类推。 运行一系列相互依赖的查询是否正确?
或者有没有办法从我的 c# 应用程序独立调用所有查询并从代码中建立它们之间的依赖关系,看起来这种方法是错误的?
【问题讨论】:
-
不应该是
exec sp02吗? -
数据库? MySQL ?甲骨文? MS SQLServer ?
-
@rdn87 数据库是 AS400
-
@Ehsan Sajjad 执行不工作,谢谢
标签: c# database stored-procedures db2 ibm-midrange