We are struggling with a very specific issue relating to the placement of a semicolon at the start of a SQL script which is corrupting the next SQL statement.
Given the following example:
Code: Select all
var sql = @"
;
CREATE TABLE foo(
new_col CHAR(2 BYTE) NOT NULL,
CONSTRAINT countries_pk PRIMARY KEY (new_col)
);
";
var script = new OracleScript(sql);
Code: Select all
CREATE TABLE oo(
new_col CHAR(2 BYTE) NOT NLL,
CONSTRAINT countries_pk PRIMARY KEY (new_ol)
)
The full example script can be found here:
Code: Select all
using System;
using Devart.Data.Oracle;
namespace oraclescript_test
{
class Program
{
static void Main(string[] args)
{
// open a dummy connection to satisfy licensing requirements
var oracleConnection = Environment.GetEnvironmentVariable("ORACLE_CONNECTION");
var devartLicenseKey = Environment.GetEnvironmentVariable("DEVART_LICENSE_KEY");
var connection = new OracleConnection($"{oracleConnection};License Key={devartLicenseKey}");
connection.Open();
var sql1 = @"
;
CREATE TABLE foo(
new_col CHAR(2 BYTE) NOT NULL,
CONSTRAINT countries_pk PRIMARY KEY (new_col)
);
";
var script1 = new OracleScript(sql1);
foreach (OracleSqlStatement statement in script1.Statements)
{
Console.WriteLine("--------------");
Console.WriteLine(statement.Text);
}
var sql2 = @"
;
CREATE TABLE foo(
new_col CHAR(2 BYTE) NOT NULL,
CONSTRAINT countries_pk PRIMARY KEY (new_col)
);
";
var script2 = new OracleScript(sql2);
foreach (OracleSqlStatement statement in script2.Statements)
{
Console.WriteLine("--------------");
Console.WriteLine(statement.Text);
}
var sql3 = @"
;CREATE TABLE foo(
new_col CHAR(2 BYTE) NOT NULL,
CONSTRAINT countries_pk PRIMARY KEY (new_col)
);
";
var script3 = new OracleScript(sql3);
foreach (OracleSqlStatement statement in script3.Statements)
{
Console.WriteLine("--------------");
Console.WriteLine(statement.Text);
}
}
}
}