2

この種のストアドプロシージャがあります

create or replace
PROCEDURE AAA 
(
    p_BBB       IN  VARCHAR,
    ...
)
AS 
T_QUERY varchar2(3000);
BEGIN
     OPEN A_CUR FOR SELECT ... BBB like '%' || p_BBB || '%';

   T_QUERY := 'SELECT BBB like %'|| p_BBB ||'% '; 

END AAA;

問題は、最初のクエリが正しく処理されているときに、の文字列間の連結によってT_QUERYエラー(無効な文字)が発生することです。

どちらもconcat()worksを使用せずT_QUERY、クエリを実行する別のストアドプロシージャに渡されます。

誰か助けてもらえますか?

4

2 に答える 2

1

あなたは試すことができます

T_QUERY :='SELECT BBB like ''%'|| p_BBB ||'%''';
于 2012-09-19T17:17:53.073 に答える
1

上記の解決策は正しいです。このように使用します。

create or replace 
PROCEDURE AAA  
( 
    p_BBB       IN  VARCHAR, 
    ... 
) 
AS  
T_QUERY varchar2(3000); 

BEGIN 

     T_QUERY :='SELECT BBB .. like ''%'|| p_BBB ||'%'''; 
     OPEN A_CUR FOR T_QUERY ; 
     ----
     ----

END AAA; 
于 2012-09-19T18:57:03.060 に答える