示例#1
0
        public override void Can_call_stored_function_with_return_as_string()
        {
            Database.ExecuteSql("create or replace function fn_test(par1 in varchar2, par2 in varchar2) return varchar2 is begin return upper(par1 || par2); end fn_test;");
            var result = Database.CallStoredFunction(DbType.String, "fn_test", In.Named("par1", "a"), In.Named("par2", "b"));

            Assert.Equal("AB", result);
        }
示例#2
0
        public override void Can_call_stored_function_with_return_as_int()
        {
            Database.ExecuteSql("create or replace function fn_test(par1 in varchar2, par2 in varchar2) return int is begin return 1; end fn_test;");
            var result = Database.CallStoredFunction(DbType.Int32, "fn_test", In.Named("par1", "a"), In.Named("par2", "b"));

            Assert.Equal(1, result);
        }
示例#3
0
        public void Convert_to_named_parameters__ignores_already_named_parameters()
        {
            object[] objs = new[] { In.Named(":par0", 1), In.Named(":par1", 2) };

            In[] pars = _dialect.ConvertToNamedParameters(objs);
            Assert.AreEqual(2, pars.Length);

            for (int i = 0; i < 2; i++)
            {
                Assert.AreEqual(objs[i], pars[i]);
            }
        }
示例#4
0
        public virtual void Convert_to_named_parameters__ignores_already_named_parameters()
        {
            object[] objs = { In.Named(":par0", 1), In.Named(":par1", 2) };
            var      pars = _dialect.ConvertToNamedParameters(objs);

            Assert.Equal(2, pars.Length);

            for (var i = 0; i < 2; i++)
            {
                Assert.Equal(objs[i], pars[i]);
            }
        }
示例#5
0
        public void Can_query_with_string_filter()
        {
            DataClient.AddTable(TableFoo,
                                Column.String("colString"),
                                Column.Int32("colInt"));

            DataClient.Insert.Into(TableFoo).Columns("colString", "colInt").Values("foo", 1);

            ResultSet resultSet = Database.Query("select colString from foo where colString = :name",
                                                 In.Named("name", "foo"));

            Assert.Equal("foo", resultSet[0][0].ToString());
        }
示例#6
0
        public void Can_bulk_insert_with_nullable()
        {
            DataClient.AddTable(TableFoo, Column.Decimal("colDecimal"));
            var v1s = new decimal?[] { 1, 2, 3, 4 };

            Database.ExecuteBulkSql("insert into " + TableFoo + " (colDecimal) values (:v1)",
                                    In.Named("v1", v1s)
                                    );
            var res = DataClient.Select
                      .Columns("colDecimal")
                      .From(TableFoo)
                      .AllRows();

            Assert.Equal(4, res.Count);
        }
示例#7
0
        public override void Can_bulk_insert_stored_procedure_with_all_items_null()
        {
            DataClient.AddTable(TableFoo, Column.Decimal("colDecimal"));
            try {
                Database.ExecuteSql("drop procedure pr_bulk");
            }
            catch { }
            Database.ExecuteSql("create or replace procedure pr_bulk(v_value in float) is begin insert into foo (colDecimal) values (v_value); end pr_bulk;");

            var v1s = new decimal?[] { null, null, null, null, null };

            Database.ExecuteBulkStoredProcedure("pr_bulk", In.Named("v_value", v1s));
            ResultSet res = DataClient.Select
                            .Columns("colDecimal")
                            .From(TableFoo)
                            .AllRows();

            Assert.Equal(5, res.Count);
        }
示例#8
0
        public override void Can_bulk_insert_stored_procedure()
        {
            DataClient.AddTable(TableFoo, Column.Int32("colInt"));
            try {
                Database.ExecuteSql("drop procedure pr_bulk");
            }
            catch { }
            Database.ExecuteSql("create or replace procedure pr_bulk(v_value in number) is begin insert into foo (colInt) values (v_value); end pr_bulk;");

            var v1s = new[] { 1, 2, 3, 4 };

            Database.ExecuteBulkStoredProcedure("pr_bulk", In.Named("v_value", v1s));
            var res = DataClient.Select
                      .Columns("colInt")
                      .From(TableFoo)
                      .AllRows();

            Assert.Equal(4, res.Count);
        }
示例#9
0
        public void Can_bulk_insert()
        {
            DataClient.AddTable(TableFoo,
                                Column.String("colString"),
                                Column.Int32("colInt"));
            var v1s = new[] { "1", "2", "3", "4" };
            var v2s = new[] { 1, 2, 3, 4 };

            Database.ExecuteBulkSql("insert into " + TableFoo + " (colString, colInt) values (:v1,:v2)",
                                    In.Named("v1", v1s),
                                    In.Named("v2", v2s)
                                    );
            ResultSet res = DataClient.Select
                            .AllColumns()
                            .From(TableFoo)
                            .AllRows();

            Assert.Equal(4, res.Count);
        }
示例#10
0
        public override void Can_bulk_insert_stored_procedure_with_nullable_and_dates()
        {
            DataClient.AddTable(TableFoo, Column.Decimal("colDecimal"), Column.Date("colDate"));
            try {
                Database.ExecuteSql("drop procedure pr_bulkDate");
            }
            catch { }
            Database.ExecuteSql("create or replace procedure pr_bulkDate(v_value in float, v_date in date) is begin insert into foo (colDecimal, colDate) values (v_value, v_date); end pr_bulkDate;");

            var v1s = new decimal?[] { 1, 2, 3, 4, null };
            var v2s = new[] { DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now };

            Database.ExecuteBulkStoredProcedure("pr_bulkDate", In.Named("v_value", v1s), In.Named("v_date", v2s));
            var res = DataClient.Select
                      .Columns("colDecimal", "colDate")
                      .From(TableFoo)
                      .AllRows();

            Assert.Equal(5, res.Count);
        }
示例#11
0
        public void Can_insert_two_big_blobs()
        {
            DataClient.AddTable(TableFoo, Column.Binary("colBin"), Column.Binary("colBin2"), Column.Date("colDate"));
            var bin = new byte[1024 * 64];

            for (int i = 0; i < bin.Length; i++)
            {
                bin[i] = 66;
            }
            Database.ExecuteSql("insert into " + TableFoo + " (colBin,colBin2,colDate) values (:v1,:v2,:v3)",
                                In.Named("v1", bin),
                                In.Named("v2", bin),
                                In.Named("v3", DateTime.Now)
                                );
            var res = DataClient.Select.Columns("colBin", "colBin2", "colDate").From(TableFoo).AllRows();
            var bs1 = (byte[])res[0][0];
            var bs2 = (byte[])res[0][1];

            CollectionAssert.AreEqual(bin, bs1);
            CollectionAssert.AreEqual(bin, bs2);
        }
示例#12
0
        public void Can_insert_big_blob()
        {
            DataClient.AddTable(TableFoo, Column.Binary("colBin"));
            var bytes = new byte[1024 * 1024];

            for (int i = 0; i < bytes.Length; i++)
            {
                bytes[i] = 66;
            }
            Database.ExecuteSql("insert into " + TableFoo + " (colBin) values (:v1)", In.Named("v1", bytes));
            var res = DataClient.Select.Columns("colBin").From(TableFoo).AllRows();
            var bs  = (byte[])res[0][0];

            CollectionAssert.AreEqual(bytes, bs);
        }
示例#13
0
        public void Can_insert_two_blobs()
        {
            DataClient.AddTable(TableFoo, Column.Binary("colBin"), Column.Binary("colBin2"));
            var bytes = new byte[10];

            for (int i = 0; i < 10; i++)
            {
                bytes[i] = 66;
            }
            Database.ExecuteSql("insert into " + TableFoo + " (colBin,colBin2) values (:v1,:v2)", In.Named("v1", bytes), In.Named("v2", bytes));
            var res = DataClient.Select.Columns("colBin", "colBin2").From(TableFoo).AllRows();
            var bs1 = (byte[])res[0][0];
            var bs2 = (byte[])res[0][1];

            CollectionAssert.AreEqual(bytes, bs1);
            CollectionAssert.AreEqual(bytes, bs2);
        }