所以我在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命令,但查询是我的问题,我希望你们明白它答案 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;"