Example #1
0
        public static RoutineParameter Routine(PlSqlParser.ParameterContext context)
        {
            var paramName = Name.Simple(context.parameter_name());
            var paramType = SqlTypeParser.Parse(context.datatype());

            var paramDir = ParameterDirection.Input;
            if (context.IN() != null) {
                if (context.OUT() != null) {
                    paramDir = ParameterDirection.InputOutput;
                } else {
                    paramDir = ParameterDirection.Input;
                }
            } else if (context.OUT() != null) {
                paramDir = ParameterDirection.Output;
            } else if (context.INOUT() != null) {
                paramDir = ParameterDirection.InputOutput;
            }

            SqlExpression defaultValue = null;
            var defaultPart = context.defaultValuePart();
            if (defaultPart != null) {
                defaultValue = Expression.Build(defaultPart.expression());
            }

            // TODO: Support default in RoutineParameter
            return new RoutineParameter(paramName, paramType, paramDir);
        }