コード例 #1
0
        /// <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);
        }
コード例 #2
0
 public override ParsedPackagePart VisitCursor_declaration([NotNull] PlSqlParser.Cursor_declarationContext context)
 {
     return(base.VisitCursor_declaration(context));
 }