public void TestNoPrepareNamedParamIn() { using (NuoDbConnection connection = new NuoDbConnection(TestFixture1.connectionString)) { connection.Open(); new NuoDbCommand("drop procedure nunit_test if exists", connection).ExecuteNonQuery(); new NuoDbCommand("create procedure nunit_test(in p1 string, in p2 string) as throw p1; end_procedure", connection).ExecuteNonQuery(); NuoDbCommand cmd = new NuoDbCommand("nunit_test", connection); cmd.CommandType = CommandType.StoredProcedure; NuoDbParameter param1 = new NuoDbParameter(); param1.ParameterName = "p2"; param1.Direction = ParameterDirection.Input; param1.Value = "goodbye"; cmd.Parameters.Add(param1); NuoDbParameter param2 = new NuoDbParameter(); param2.ParameterName = "p1"; param2.Direction = ParameterDirection.Input; param2.Value = "hello"; cmd.Parameters.Add(param2); try { cmd.ExecuteNonQuery(); Assert.Fail(); } catch (Exception e) { Assert.IsTrue(e.Message.EndsWith("hello"), "Expected error: 'hello', received " + e.Message); } } }
internal static NuoDbParameter CreateSqlParameter(string name, TypeUsage type, ParameterMode mode, object value) { NuoDbParameter result = new NuoDbParameter(); result.ParameterName = name; result.Value = value; ParameterDirection direction = MetadataHelpers.ParameterModeToParameterDirection(mode); if (result.Direction != direction) { result.Direction = direction; } // output parameters are handled differently (we need to ensure there is space for return // values where the user has not given a specific Size/MaxLength) bool isOutParam = mode != ParameterMode.In; bool isNullable = MetadataHelpers.IsNullable(type); if (isOutParam || isNullable != result.IsNullable) { result.IsNullable = isNullable; } return(result); }
public void TestNoPrepareNamedParamOut() { using (NuoDbConnection connection = new NuoDbConnection(TestFixture1.connectionString)) { connection.Open(); new NuoDbCommand("drop procedure nunit_test if exists", connection).ExecuteNonQuery(); new NuoDbCommand("create procedure nunit_test(out p1 string, out p2 string) as p1='hello'; end_procedure", connection).ExecuteNonQuery(); NuoDbCommand cmd = new NuoDbCommand("nunit_test", connection); cmd.CommandType = CommandType.StoredProcedure; NuoDbParameter param1 = new NuoDbParameter(); param1.ParameterName = "p2"; param1.Direction = ParameterDirection.Output; cmd.Parameters.Add(param1); NuoDbParameter param2 = new NuoDbParameter(); param2.ParameterName = "p1"; param2.Direction = ParameterDirection.Output; cmd.Parameters.Add(param2); cmd.ExecuteNonQuery(); Assert.AreEqual("hello", cmd.Parameters["p1"].Value); } }
internal static NuoDbParameter CreateSqlParameter(string name, TypeUsage type, ParameterMode mode, object value) { NuoDbParameter result = new NuoDbParameter(); result.ParameterName = name; result.Value = value; ParameterDirection direction = MetadataHelpers.ParameterModeToParameterDirection(mode); if (result.Direction != direction) { result.Direction = direction; } // output parameters are handled differently (we need to ensure there is space for return // values where the user has not given a specific Size/MaxLength) bool isOutParam = mode != ParameterMode.In; bool isNullable = MetadataHelpers.IsNullable(type); if (isOutParam || isNullable != result.IsNullable) { result.IsNullable = isNullable; } return result; }
public override void Visit(DbConstantExpression expression) { NuoDbParameter parameter = CreateParameter(expression.Value, expression.ResultType); commandText.Append(parameter.ParameterName); }