动态光标PERVASIVE

时间:2015-09-22 19:26:05

标签: cursor pervasive

我正在尝试使用动态游标创建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

1 个答案:

答案 0 :(得分:1)

由于此问题已标记为pervasive,我假设您希望在PervasiveSQL中实现此目的。

我不认为你在那里做的事情是可能的。这样做的主要原因是 - 据我所知 - P-SQL没有聚合函数将任意列或行组合成一个字符串(例如PostgreSQL' s string_agg)。

其次,P-SQL不支持按列号查询。 :query参数可以是任何语句(即使是无效的语句!),因此您不知道它会产生多少列。

更基本的说明:你想要达到的目标是什么?这个存储过程在我看来就像一个过于复杂的方式只执行:query,并且无法处理结果。如果您的目标是记录或分析,那么通过使用外部的,更灵活的(脚本)语言来处理结果集,您会不会更好?不可否认,SQL 一种编程语言,但它有其局限性。