Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#选择正在转换为Oracle SQL的查询,该查询带有意外的unicode字符;ORA-12704:字符集不匹配“;例外_C#_Oracle_Entity Framework_Unicode_Devart - Fatal编程技术网

C#选择正在转换为Oracle SQL的查询,该查询带有意外的unicode字符;ORA-12704:字符集不匹配“;例外

C#选择正在转换为Oracle SQL的查询,该查询带有意外的unicode字符;ORA-12704:字符集不匹配“;例外,c#,oracle,entity-framework,unicode,devart,C#,Oracle,Entity Framework,Unicode,Devart,我正在使用 甲骨文11g 德瓦特8.5.592 实体框架6.1.3 以下C#代码: 在Oracle中转换为以下SQL: SELECT 'First' || CASE WHEN CASE WHEN NOT (('Second' IS NULL) OR (6 = 0)) THEN ', ' ELSE '' END IS NULL THEN N'' WHEN NOT (('Second' IS NUL

我正在使用

  • 甲骨文11g
  • 德瓦特8.5.592
  • 实体框架6.1.3
以下C#代码:

在Oracle中转换为以下SQL:

SELECT 'First' || 
    CASE WHEN 
        CASE WHEN NOT (('Second' IS NULL) OR (6 = 0))
            THEN ', ' 
            ELSE '' END IS NULL 
        THEN N'' WHEN  NOT (('Second' IS NULL) OR (6 = 0)) 
            THEN ', ' 
            ELSE '' END || 'Third' AS C1
FROM CLI.CLE_GROUPS "Extent1"
注意:C#代码故意没有意义。这只是为了强调,是字符串与条件字符串的串联导致了问题

运行此SQL时会导致“ORA-12704:字符集不匹配”异常。。。是N''导致了问题。架构的任何部分都没有使用unicode


有人知道为什么它决定将这一个空字符串设为unicode,甚至为什么空字符串和嵌套的case语句首先存在吗?

它是自己放入
6=0
,还是省略了部分C代码?因为这会是一件非常奇怪的事情。我这样问是因为对于这些问题,拥有复制某些东西的精确代码通常很重要。如果它是重复的,这个问题至少可以归结为它的本质。这类东西是我不知道的原因,或者M6=0是随机介绍,这并不能使人充满信心。@Jeroen Mostert:是的,这似乎是同一个问题。谢谢你帮我找到它。实际上,我发现了一个不同的问题,它也建议使用拦截器(),今天上午我将要解决这个问题。虽然感觉有点像黑客,但似乎我别无选择。很久以来我第一次使用Oracle数据库,现在我想起来了原因。请随意添加您的评论作为答案,我会将其标记为答案。
SELECT 'First' || 
    CASE WHEN 
        CASE WHEN NOT (('Second' IS NULL) OR (6 = 0))
            THEN ', ' 
            ELSE '' END IS NULL 
        THEN N'' WHEN  NOT (('Second' IS NULL) OR (6 = 0)) 
            THEN ', ' 
            ELSE '' END || 'Third' AS C1
FROM CLI.CLE_GROUPS "Extent1"