Почему команда SQL в моем коде заменяется на «TODO: FUNC» во время выполнения? - PullRequest
0 голосов
/ 18 июня 2019

Я настраиваю программу .NET для манипулирования некоторыми данными в нашей базе данных Redshift. Большинство моих команд проходят без проблем, но когда я пытаюсь выполнить инструкцию INSERT, включающую функцию CONVERT в select, она заменяет всю функцию CONVERT текстом «TODO: FUNC», а затем я получаю эту ошибку:

System.Data.Odbc.OdbcException (0x80131937): ОШИБКА [42601] [Amazon] [Amazon Redshift] (30) Произошла ошибка при попытке выполнить запрос: [SQLState 42601] ОШИБКА: ошибка синтаксиса на уровне или рядом с ним: " LINE 1: ... случай, когда package_size имеет значение null, а затем null, иначе TODO: FUNC end ...

Команда SQL выполняется без ошибок из Aginity Workbench. Если я отключу функцию CONVERT, я получу ошибку, что мои типы не совпадают.

OdbcConnection conn = new OdbcConnection(connString);
conn.Open();

string sql = "truncate table sch.table; insert into sch.table (package_size) select case when package_size is null then null else convert(numeric(9,3),left(package_size,6) || '.' || right(package_size,3)) end as package_size from sch.stage_table;";

OdbcCommand da = new OdbcCommand(sql, conn);
da.ExecuteNonQuery();

conn.Close();
...