public static void MatchInvoke() { var name = ObjectName.Parse("a.proc"); var info = new SqlMethodInfo(name); info.Parameters.Add(new SqlParameterInfo("a", PrimitiveTypes.Integer())); var procedure = new SqlProcedureDelegate(info, methodContext => Task.CompletedTask); var invoke = new Invoke(name, new[] { new InvokeArgument(SqlObject.BigInt(11)) }); Assert.True(procedure.Matches(null, invoke)); }
public static void GetString() { var name = ObjectName.Parse("a.proc"); var info = new SqlMethodInfo(name); info.Parameters.Add(new SqlParameterInfo("a", PrimitiveTypes.Integer())); var function = new SqlProcedureDelegate(info, ctx => { var a = ctx.Value("a"); var b = a.Multiply(SqlObject.BigInt(2)); Console.Out.WriteLine("a * 2 = {0}", b); }); var sql = $"PROCEDURE a.proc(a INTEGER)"; Assert.Equal(sql, function.ToString()); }
public async Task ExecuteWithNamedArgs() { var name = ObjectName.Parse("a.func"); var info = new SqlMethodInfo(name); info.Parameters.Add(new SqlParameterInfo("a", PrimitiveTypes.Integer())); var procedure = new SqlProcedureDelegate(info, ctx => { var a = ctx.Value("a"); var b = a.Multiply(SqlObject.BigInt(2)); Console.Out.WriteLine("a * 2 = {0}", b); }); Assert.Equal(name, info.MethodName); var result = await procedure.ExecuteAsync(context, new InvokeArgument("a", SqlObject.Integer(22))); Assert.NotNull(result); Assert.False(result.HasReturnedValue); }
public async void ExecuteWithOutputArgs() { var name = ObjectName.Parse("a.proc"); var info = new SqlMethodInfo(name); info.Parameters.Add(new SqlParameterInfo("a", PrimitiveTypes.Integer())); info.Parameters.Add(new SqlParameterInfo("b", PrimitiveTypes.Integer(), SqlParameterDirection.Out)); var procedure = new SqlProcedureDelegate(info, ctx => { var a = ctx.Value("a"); var b = a.Multiply(SqlObject.Integer(2)); ctx.SetOutput("b", SqlExpression.Constant(b)); }); Assert.Equal(name, info.MethodName); var result = await procedure.ExecuteAsync(context, new InvokeArgument("a", SqlObject.Integer(22))); Assert.NotNull(result); Assert.False(result.HasReturnedValue); Assert.NotEmpty(result.Output); }