查询在PL / SQL上运行,但不在ASP.NET上运行

时间:2017-06-28 19:00:21

标签: sql asp.net oracle plsql

所以我在SL / SQL中有这个查询:

DECLARE
UNI VARCHAR(250);
NI VARCHAR(250);
NOME VARCHAR(250);
POSTOO VARCHAR(250);
FINALMENTE VARCHAR(250);
BEGIN
SELECT UNIDADE INTO UNI FROM OWNDB2.T_UNIDADES WHERE SIGUNIDADE = 'DAGI';                                            
SELECT NII INTO NI FROM OWNDB2.T_UNID_CARGO WHERE UNIDADE = UNI AND DETALHE = 'C00';                                            
select NOME INTO NOME from owndb2.t_BASEPES where nii = NI;
select POSTO INTO POSTOO from owndb2.t_BASEPES where nii = NI;
select DESPOSTO INTO FINALMENTE from owndb2.t_CODPOSTO where POSTO = POSTOO;
END;

我在PL / SQL中运行此查询,它给了我想要看到的内容但是当我在Asp.net C#中粘贴此查询时,它只是给出了一个错误,说该查询是一种不正确的语法。 是的,我要连接的数据库是一个Oracle数据库,该查询几乎是我在ASP.Net项目中使用的数据库表。

这是我将查询放在ASP.Net中的方式:

"DECLARE" +
"UNI VARCHAR(250);" +
"NI VARCHAR(250);" +
"NOME VARCHAR(250);" +
"POSTOO VARCHAR(250);" +
"FINALMENTE VARCHAR(250);" +
"BEGIN" +
"SELECT UNIDADE INTO UNI FROM OWNDB2.T_UNIDADES WHERE SIGUNIDADE = 'DAGI';" +                                           
"SELECT NII INTO NI FROM OWNDB2.T_UNID_CARGO WHERE UNIDADE = UNI AND DETALHE = 'C00';" +                                          
"SELECT NOME INTO NOME from owndb2.t_BASEPES where nii = NI;" +
"SELECT POSTO INTO POSTOO from owndb2.t_BASEPES where nii = NI;" +
"SELECT DESPOSTO INTO FINALMENTE from owndb2.t_CODPOSTO where POSTO = POSTOO;" +
"END;"

为什么在PL / SQL和ASP.Net中运行良好的查询只会给我一个不正确的语法错误?

PS:我只是插入查询,因为它是我遇到的问题,我没有插入所有的Sqlconnections和sql命令,但查询是我的问题,我希望你们明白它

1 个答案:

答案 0 :(得分:1)

您的C#代码中的SQL语句缺少空格。
现在您的查询看起来像DECLAREUNI VARCHAR(250);NI VARCHAR(250); ... POSTOO;END;

"DECLARE" +
" UNI VARCHAR(250);" +
" NI VARCHAR(250);" +
" NOME VARCHAR(250);" +
" POSTOO VARCHAR(250);" +
" FINALMENTE VARCHAR(250);" +
" BEGIN" +
" SELECT UNIDADE INTO UNI FROM OWNDB2.T_UNIDADES WHERE SIGUNIDADE = 'DAGI';" +                                           
" SELECT NII INTO NI FROM OWNDB2.T_UNID_CARGO WHERE UNIDADE = UNI AND DETALHE = 'C00';" +                                          
" SELECT NOME INTO NOME from owndb2.t_BASEPES where nii = NI;" +
" SELECT POSTO INTO POSTOO from owndb2.t_BASEPES where nii = NI;" +
" SELECT DESPOSTO INTO FINALMENTE from owndb2.t_CODPOSTO where POSTO = POSTOO;" +
" END;"

应该通过@"string"将其放入一个长string literal

string query = @"DECLARE
UNI VARCHAR(250);
NI VARCHAR(250);
NOME VARCHAR(250);
POSTOO VARCHAR(250);
FINALMENTE VARCHAR(250);
BEGIN
SELECT UNIDADE INTO UNI FROM OWNDB2.T_UNIDADES WHERE SIGUNIDADE = 'DAGI';                                            
SELECT NII INTO NI FROM OWNDB2.T_UNID_CARGO WHERE UNIDADE = UNI AND DETALHE = 'C00';                                            
select NOME INTO NOME from owndb2.t_BASEPES where nii = NI;
select POSTO INTO POSTOO from owndb2.t_BASEPES where nii = NI;
select DESPOSTO INTO FINALMENTE from owndb2.t_CODPOSTO where POSTO = POSTOO;
END;"