【问题标题】:Oracle Dynamic Cursor - ORA-00936 missing expressionOracle 动态游标 - ORA-00936 缺少表达式
【发布时间】:2020-09-04 03:32:17
【问题描述】:

我需要在我的过程中使用一个动态游标来接收来自另一个游标的值。 当我运行这个程序时,我得到 ORA-00936 缺少表达式。 我将这个从光标中选择的内容放入 dbms_output 以查看它是否正确。

这是代码:

BEGIN
    OPEN dsa_tables;
    LOOP
        FETCH dsa_tables INTO
            v_owner,
            v_table_name,
            v_column_name,
            v_comments,
            v_tech_date;
        EXIT WHEN dsa_tables%notfound;
        v_table_all := dbms_assert.sql_object_name(v_owner
                                                   || '.'
                                                   || v_table_name);
     -- with this cursor is the problem    
        OPEN count_date FOR ' SELECT '
                            || v_column_name
                               || ','
                                  || ' COUNT('
                                     || v_column_name
                                        || ') FROM '
                                           ||v_table_all
                                           || ' GROUP BY '
                                           || v_column_name;
    LOOP
        FETCH count_date INTO
            v_date,
            v_count;
     EXIT WHEN count_date%notfound;      
            
    END LOOP;        
        CLOSE count_date; 
        
        
    END LOOP;

    CLOSE dsa_tables;
END;
/

【问题讨论】:

    标签: oracle dynamic cursor ora-00936


    【解决方案1】:

    您可能已将 v_column_name 设置为 NULL。

    【讨论】:

      【解决方案2】:

      我已经检查过了,此列中没有 NULL。

      【讨论】:

      • 修改您的代码以显示带有 DBMS_OUTPUT.PUT_LINE 的完整语句并在收到 ORA-00936 时发布输出。注意:您不应该使用添加答案来回复另一个答案,而是为相关答案添加评论。
      • 这是个好主意。当我这样做时,我得到了 SELECT DATE, COUNT(DATE) FROM DSA_TAB GROUP BY DATE。 :) 谢谢。 pifor
      猜你喜欢
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多