/// <summary>
        /// cursor_declaration :
        ///     CURSOR identifier(LEFT_PAREN (COMMA? parameter_spec)+ RIGHT_PAREN )? (RETURN type_spec)? (IS select_statement)? ';'
        ///     ;
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override object VisitCursor_declaration([NotNull] PlSqlParser.Cursor_declarationContext context)
        {
            var names = context.identifier().GetCleanedTexts();

            OCursorDeclarationStatement method = new OCursorDeclarationStatement()
            {
                Name = names[0],
            };

            var parameter_specs = context.parameter_spec();

            if (parameter_specs != null && parameter_specs.Length > 0)
            {
                foreach (PlSqlParser.Parameter_specContext parameter_spec in parameter_specs)
                {
                    var arg = (ArgumentModel)VisitParameter_spec(parameter_spec);
                    arg.Key = method.Arguments.Count().ToString();
                    method.Arguments.Add(arg);
                }
            }

            if (context.RETURN().Exist())
            {
                var returnType = (OTypeReference)VisitType_spec(context.type_spec());
                method.ResultType = new ProcedureResult()
                {
                    Type = returnType
                };
            }

            if (context.IS().Exist())
            {
                //var select_statement = VisitSelect_statement(context.select_statement());
                //method.Query = select_statement;
            }

            return(method);
        }
Esempio n. 2
0
 public void VisitCursorDeclarationStatement(OCursorDeclarationStatement oCursorDeclarationStatement)
 {
     throw new NotImplementedException();
 }
Esempio n. 3
0
 public void VisitCursorDeclarationStatement(OCursorDeclarationStatement oCursorDeclarationStatement)
 {
 }