*                       procedural language
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.47 2003/09/25 23:02:12 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.48 2003/10/30 17:18:55 tgl Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
                    }
                | decl_varname K_CURSOR
                    { plpgsql_ns_push(NULL); }
-                 decl_cursor_args decl_is_from K_SELECT decl_cursor_query
+                 decl_cursor_args decl_is_from decl_cursor_query
                    {
                        PLpgSQL_var *new;
                        PLpgSQL_expr *curname_def;
 
                        new->datatype = plpgsql_parse_datatype("refcursor");
 
-                       new->cursor_explicit_expr = $7;
+                       new->cursor_explicit_expr = $6;
                        if ($4 == NULL)
                            new->cursor_explicit_argrow = -1;
                        else
                        PLpgSQL_expr *query;
 
                        plpgsql_ns_setlocal(false);
-                       query = read_sql_stmt("SELECT ");
+                       query = read_sql_stmt("");
                        plpgsql_ns_setlocal(true);
                        
                        $$ = query;
                            switch (tok)
                            {
                                case K_SELECT:
-                                   new->query = read_sql_stmt("SELECT ");
+                               case '(':
+                                   plpgsql_push_back_token(tok);
+                                   new->query = read_sql_stmt("");
                                    break;
 
                                case K_EXECUTE: