Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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# Can';t在Visual Studio中运行SQL查询,但在Oracle SQL Developer中工作_C#_Sql_Oracle_Dapper - Fatal编程技术网

C# Can';t在Visual Studio中运行SQL查询,但在Oracle SQL Developer中工作

C# Can';t在Visual Studio中运行SQL查询,但在Oracle SQL Developer中工作,c#,sql,oracle,dapper,C#,Sql,Oracle,Dapper,我基本上在stringbuilder对象中生成了一个查询,它看起来与以下内容完全相同: SQL\u插入 INSERT INTO S1589_XML_Ptdes(ID, VALID_FROM_DATE, VALID_TO_DATE, SYMBOLIC_NAME, SHORT_NAME_FRENCH, SHORT_NAME_DUTCH, LONG_NAME_FRENCH, LONG_NAME_DUTCH, PTCAR_ID, DISTANCE_FROM_PTCAR, TYPE, LAST_UPDAT

我基本上在stringbuilder对象中生成了一个查询,它看起来与以下内容完全相同:

SQL\u插入

INSERT INTO S1589_XML_Ptdes(ID, VALID_FROM_DATE, VALID_TO_DATE, SYMBOLIC_NAME, SHORT_NAME_FRENCH, SHORT_NAME_DUTCH, LONG_NAME_FRENCH, LONG_NAME_DUTCH, PTCAR_ID, DISTANCE_FROM_PTCAR, TYPE, LAST_UPDATE_DATE)
WITH S1589_XML_Ptdes AS (
select '142','1996-06-02','2006-05-31','111001','Quais','Perrons','Quais Gand St Pierre','Perrons Gent St Pieters','455','0','2','2010-06-04T06:21:35' from dual 
union all select '142','2006-06-01','2010-02-10','111001','Quais','Perrons','Quais Gand St Pierre','Perrons Gent St Pieters','455','-38','2','2010-06-04T06:21:35' from dual 
union all select '142','2010-02-11','2011-04-20','111001','Gand St. P','Gent St.P','Gand-Saint-Pierre','Gent-Sint-Pieters','455','-38','2','2011-04-26T09:08:00' from dual 
union all select '142','2011-04-21','2014-01-19','111001','Gent St.P','Gent St.P','Gent-Sint-Pieters','Gent-Sint-Pieters','455','-38','2','2014-01-20T14:06:39' from dual 
union all select '142','2014-01-20','2015-12-17','111001','Gent St.P','Gent St.P','Gent-Sint-Pieters','Gent-Sint-Pieters','455','0','2','2015-12-16T18:10:31' from dual 
) SELECT * FROM S1589_XML_Ptdes; COMMIT;
但是当我运行以下行时:
return con.Execute(SQL_Insert.ToString())我得到以下错误:

Oracle.ManagedDataAccess.Client.OracleException:'ORA-00933:SQL 命令未正确结束'

当我在OracleSQLDeveloper中执行此查询时,它将插入所有5行并完美地提交,没有任何错误消息或其他信息

对我这里遗漏的东西有什么建议吗


我使用Dapper作为ORM,以防这可能是有用的信息。

您不需要子查询factoring子句,Oracle将不接受同一语句中的两个命令(在本例中,
INSERT
COMMIT
)。SQL Developer将把它们作为两个独立的语句进行处理:一个
INSERT
语句,后跟一个
COMMIT
语句

因此,请删除
COMMIT
语句:

INSERT INTO S1589_XML_Ptdes(ID, VALID_FROM_DATE, VALID_TO_DATE, SYMBOLIC_NAME, SHORT_NAME_FRENCH, SHORT_NAME_DUTCH, LONG_NAME_FRENCH, LONG_NAME_DUTCH, PTCAR_ID, DISTANCE_FROM_PTCAR, TYPE, LAST_UPDATE_DATE)
  select '142', DATE '1996-06-02', DATE '2006-05-31','111001','Quais','Perrons','Quais Gand St Pierre','Perrons Gent St Pieters','455','0','2', TIMESTAMP '2010-06-04 06:21:35' from dual union all
  select '142', DATE '2006-06-01', DATE '2010-02-10','111001','Quais','Perrons','Quais Gand St Pierre','Perrons Gent St Pieters','455','-38','2', TIMESTAMP '2010-06-04 06:21:35' from dual union all
  select '142', DATE '2010-02-11', DATE '2011-04-20','111001','Gand St. P','Gent St.P','Gand-Saint-Pierre','Gent-Sint-Pieters','455','-38','2', TIMESTAMP '2011-04-26 09:08:00' from dual union all
  select '142', DATE '2011-04-21', DATE '2014-01-19','111001','Gent St.P','Gent St.P','Gent-Sint-Pieters','Gent-Sint-Pieters','455','-38','2', TIMESTAMP '2014-01-20 14:06:39' from dual union all
  select '142', DATE '2014-01-20', DATE '2015-12-17','111001','Gent St.P','Gent St.P','Gent-Sint-Pieters','Gent-Sint-Pieters','455','0','2', TIMESTAMP '2015-12-16 18:10:31' from dual;
如果您的c#连接未设置为自动提交,则可能需要发出显式提交


此外,如果要插入
日期
值,则应使用
日期
/
时间戳
文字,并应检查以字符串形式插入数字是否合适。

不需要子查询分解子句,Oracle将不接受两个命令(在本例中,
INSERT
COMMIT
)在同一条语句中。SQL开发人员将把它们作为两条单独的语句进行处理:一条
INSERT
语句,后跟一条
COMMIT
语句

因此,请删除
COMMIT
语句:

INSERT INTO S1589_XML_Ptdes(ID, VALID_FROM_DATE, VALID_TO_DATE, SYMBOLIC_NAME, SHORT_NAME_FRENCH, SHORT_NAME_DUTCH, LONG_NAME_FRENCH, LONG_NAME_DUTCH, PTCAR_ID, DISTANCE_FROM_PTCAR, TYPE, LAST_UPDATE_DATE)
  select '142', DATE '1996-06-02', DATE '2006-05-31','111001','Quais','Perrons','Quais Gand St Pierre','Perrons Gent St Pieters','455','0','2', TIMESTAMP '2010-06-04 06:21:35' from dual union all
  select '142', DATE '2006-06-01', DATE '2010-02-10','111001','Quais','Perrons','Quais Gand St Pierre','Perrons Gent St Pieters','455','-38','2', TIMESTAMP '2010-06-04 06:21:35' from dual union all
  select '142', DATE '2010-02-11', DATE '2011-04-20','111001','Gand St. P','Gent St.P','Gand-Saint-Pierre','Gent-Sint-Pieters','455','-38','2', TIMESTAMP '2011-04-26 09:08:00' from dual union all
  select '142', DATE '2011-04-21', DATE '2014-01-19','111001','Gent St.P','Gent St.P','Gent-Sint-Pieters','Gent-Sint-Pieters','455','-38','2', TIMESTAMP '2014-01-20 14:06:39' from dual union all
  select '142', DATE '2014-01-20', DATE '2015-12-17','111001','Gent St.P','Gent St.P','Gent-Sint-Pieters','Gent-Sint-Pieters','455','0','2', TIMESTAMP '2015-12-16 18:10:31' from dual;
如果您的c#连接未设置为自动提交,则可能需要发出显式提交


此外,如果要插入
日期
值,则应使用
日期
/
时间戳
文字,并应检查以字符串形式插入数字是否合适。

省略提交解决了此问题。另外,最好知道Oracle不接受同一语句中的两个命令。关于dat,有很多帮助e和数字,我将把它们留作varchars,因为它们只用于显示purposes@JorisDecraecker通常更好(除非有重大商业理由不这样做)为您的数据选择正确的数据类型-即使它只是用于显示目的。忽略提交解决了问题。另外,很高兴知道Oracle不接受同一语句中的两个命令。非常有帮助!关于日期和数字,我将它们保留为varchar,因为它们仅用于显示purposes@JorisDecraecker通常最好为数据选择正确的数据类型(除非有重要的业务原因不这样做),即使它只是用于显示目的。