我正在尝试使用动态游标创建SP以获取任何Select语句的结果
CREATE PROCEDURE CursorTest (:query IN VARCHAR(5000)) ;
BEGIN
DECLARE :out VARCHAR;
DECLARE :dynamicCursor CURSOR FOR EXEC (:query);
OPEN dynamicCursor;
/* cursor loop */
Cursorloop:
LOOP
FETCH NEXT FROM `enter code here`Cursorloop INTO :out;
End LOOP;
CLOSE dynamicCursor;
END;
我有两个问题,用动态查询声明游标并将结果输出为一行。
Thanks in advance
答案 0 :(得分:1)
由于此问题已标记为pervasive
,我假设您希望在PervasiveSQL中实现此目的。
我不认为你在那里做的事情是可能的。这样做的主要原因是 - 据我所知 - P-SQL没有聚合函数将任意列或行组合成一个字符串(例如PostgreSQL' s string_agg
)。
其次,P-SQL不支持按列号查询。 :query
参数可以是任何语句(即使是无效的语句!),因此您不知道它会产生多少列。
更基本的说明:你想要达到的目标是什么?这个存储过程在我看来就像一个过于复杂的方式只执行:query
,并且无法处理结果。如果您的目标是记录或分析,那么通过使用外部的,更灵活的(脚本)语言来处理结果集,您会不会更好?不可否认,SQL 是一种编程语言,但它有其局限性。