2017-06-28 14 views
0

上では実行されません:クエリはPL/SQLで実行されますが、私はSL/SQLでこのクエリを持っている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 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

スペースを見て、あなたが表示されます。あなたのクエリは 'DECLAREUNI VARCHAR(250); NI VARCHAR(250);のようになります。 ... POSTOO; END; ' – jAC

+0

*「接続しているデータベースはOracle DataBaseです」* - では、なぜSQL Serverタグを追加しますか? – Filburt

+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;" 
+1

私は明日それを試し、あなたにそれについて更新されたあなたを保つでしょう! –

関連する問題