Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
// UDF Development

public static class NamedArgumentsTableFunction extends TableFunction<Object> {




       // Method overloads with different parameter sets

       // Example usage: SELECT * FROM TABLE(my_table_function(in1 => 'value1', in2 => 'value2'))

   @FunctionHint(

           input    @FunctionHint(
           input = {@DataTypeHint("STRING"), @DataTypeHint("STRING NOT NULL")},

           output           output = @DataTypeHint("STRING"),

           argumentNames           arguments = {
                @ArgumentHint(name = {"in1"),
                @ArgumentHint(name = "in2")
            })

   public    public void eval(String arg1, String arg2) {

       collect       collect(arg1 + ", " + arg2);

       }




        // Example usage: SELECT * FROM TABLE(my_table_function(in1 => 'value1', in2 => 'value2', in3 => 'value3'))

   @FunctionHint(

           input     @FunctionHint(
           input = {@DataTypeHint("STRING"), @DataTypeHint("STRING"), @DataTypeHint("STRING NOT NULL")},

           output           output = @DataTypeHint("STRING"),

           argumentNames           arguments = {
                @ArgumentHint(name = {"in1"),
                @ArgumentHint(name = "in2"),
				@ArgumentHint(name = "in3")
            })

   public    public void eval(String arg1, String arg2, String arg3) {

       collect       collect(arg1 + ", " + arg2 + "," + arg3);

   }

}



    } 
}  



// Call Procedure Development

public static class NamedArgumentsProcedure implements Procedure {




   // Method overloads with different parameter sets

   // Example usage: CALL myNamedProcedure(in1 => 'value1', d => 100)

   @ProcedureHint(

           input = {@DataTypeHint("STRING"), @DataTypeHint("INT")},=

           output = @DataTypeHint("STRING"),              

           argumentNames           arguments = {
                @ArgumentHint(name = {"in1"),
                @ArgumentHint(name = "in2")
            })

   public       public String[] call(ProcedureContext procedureContext, String arg1, Integer arg2) {

       return new String[]{arg1 + ", " + arg2};

   }




   // Example usage: CALL myNamedProcedure(in1 => 100, in2 => 200)

   @ProcedureHint(

           input = {@DataTypeHint("INT"), @DataTypeHint("INT")},

           output = @DataTypeHint("STRING"),              

           argumentNames           arguments = {
                @ArgumentHint(name = {"in1"),
                @ArgumentHint(name = "in2")})

   public       public String[] call(ProcedureContext procedureContext, Integer arg1, Integer arg2, Integer arg3) {

       return new String[]{arg1 + ", " + arg2};

   }

}


2 .The class can only have one method, and users can optionally specify parameters.

Code Block
languagejava
// UDF Development

public static class NamedArgumentsTableFunction extends TableFunction<Object> {




   // Example usage: SELECT * FROM TABLE(my_table_function(in1 => 'value1', in2 => 'value2'))

   // Example usage: SELECT * FROM TABLE(my_table_function(in1 => 'value1', in2 => 'value2', in3 => 'value3'))

   @FunctionHint(

           input = {@DataTypeHint("STRING"), @DataTypeHint(value = "STRING", isOptional = false), @DataTypeHint(value = "STRING", isOptional = true)},

           output = @DataTypeHint("STRING"),             

           argumentNames           arguments = {
                @ArgumentHint(name = {"in1", isOptional = true),
                @ArgumentHint(name = "in2", isOptional = true)
                @ArgumentHint(name = "in3", isOptional = true)})

   public      
    public void eval(String arg1, String arg2, String arg3) {

       collect(arg1 + ", " + arg2 + "," + arg3);

   }

}







// Call Procedure Development

public static class NamedArgumentsProcedure implements Procedure {




   // Example usage: CALL myNamedProcedure(in1 => 'value1', in2 => 'value2')

   // Example usage: CALL myNamedProcedure(in1 => 'value1', in2 => 'value2', in3 => 'value3')

   @ProcedureHint(

           input = {@DataTypeHint(value = "STRING"), isOptional@DataTypeHint(value = false"STRING"), @DataTypeHint(value = "STRING")},
           output isOptional = false@DataTypeHint("STRING"), @DataTypeHint(value            
		   arguments = {
                @ArgumentHint(name = "STRINGin1", isOptional = truefalse)},




           output,
                @ArgumentHint(name = @DataTypeHint("STRING"),

           argumentNamesin2", isOptional = true)
                @ArgumentHint(name = {"cin3", "d", "e"})

   publicisOptional = true)})       
   public String[] call(ProcedureContext procedureContext, String arg1, String arg2, String arg3) {

       return new String[]{arg1 + ", " + arg2 + "," + arg3};

   }

}

...


Use named parameters when using function and call procedure.


Users can now use functions and call procedures with named parameters as follows:


Code Block
languagesql
-- for scalar function




SELECT my_scalar_function(param1 => ‘value1’, param2 => ‘value2’’) FROM []




-- for table function




SELECT  *  FROM TABLE(my_table_function(param1 => 'value1', param2 => 'value2'))




-- for agg function




SELECT my_agg_function(param1 => 'value1', param2 => 'value2') FROM []




-- for call procedure




CALL  procedure_name(param1 => ‘value1’, param2 => ‘value2’)

...