Oracle 10g 带参数的游标 Error

Posted

技术标签:

【中文标题】Oracle 10g 带参数的游标 Error【英文标题】:Oracle 10g A cursor with parameter Error 【发布时间】:2014-04-25 11:52:38 【问题描述】:

我不明白为什么会出现此错误。我有表格,但代码示例无法正常工作。这里有什么问题?

DECLARE 
    CURSOR c_cust(p_city VARCHAR2) IS 
        SELECT * FROM cust WHERE cust.city=p_city;
    v_cust c_cust%ROWTYPE;  
    v_city c_cust%TYPE;
BEGIN
    v_city := 'London';
    OPEN c_cust (v_city);
    LOOP
        FETCH c_cust INTO v_cust;
        EXIT WHEN (c_cust%NOTFOUND);
        DBMS_OUTPUT.PUT_LINE (v_cust.cname || ' has ' || v_cust.rating);
    END LOOP;
    IF (c_cust%ISOPEN) THEN CLOSE c_cust;
END;

ORA-06550:第 15 行,第 4 列:PLS-00103: 遇到符号“;” 预期以下情况之一时:如果

    声明 CURSOR c_cust(p_city VARCHAR2) 是 SELECT * FROM cust WHERE cust.city=p_city;**

【问题讨论】:

"Oracle 无法正常工作" 是一个很好的声明... 是 :) 编辑了线程名称。 【参考方案1】:

c_cust%ISOPEN 应该在结束循环之前;

If .... then
  ....
end if;

如果你错过了结局;

【讨论】:

以上是关于Oracle 10g 带参数的游标 Error的主要内容,如果未能解决你的问题,请参考以下文章

Oracle与Mysql内嵌游标的使用示例

在 Oracle 10g 的 SQL 过程中使用游标的任何替代方法?

oracle过程中游标作为输入参数 求解。。。

oracle PL/SQL编程语言之游标的使用

oracle PL/SQL编程语言之游标的使用

在oracle中创建带参存储过程,传进去的参数可以为空么?在存储过程中要如何判断传进来的值是不是为空。