2016-10-03 13 views
0

を公開し、私は、ストアドプロシージャ、次のいる:PL/SQL:数値または値のエラー:文字列バッファが小さすぎ - アプリをリモート

create or replace PROCEDURE TEST_REQUEST(
    outHTML OUT VARCHAR2, 
    varParameters IN XMLTYPE) 
IS 
    tmpVar NUMBER; 
BEGIN 
    outHTML := 
     '<table><tr><td>Test!</td></tr></table>'; 
EXCEPTION 
    WHEN NO_DATA_FOUND 
    THEN 
     NULL; 
    WHEN OTHERS 
    THEN 
     -- Consider logging the error and then re-raise 
     RAISE; 
END TEST_REQUEST; 

入力パラメータ 'varParameters' =

'<test> 
    <testid>3DA736A8A4562E053D6</testid> 
    <testaction>Reject</testaction> 
</test>' 

そして私を上記のストアドプロシージャを呼び出します。

using (OracleConnection connection = new OracleConnection()) 
{ 
     connection.ConnectionString = this.ConnectionString; 
     connection.Open(); 

     using (OracleCommand command = new OracleCommand()) 
     { 
      command.Connection = connection; 
      command.CommandType = CommandType.StoredProcedure; 
      command.BindByName = true; 
      command.CommandText = "TEST_OWNER.TEST_REQUEST "; 

      OracleParameter outHtml = command.Parameters.Add("outHTML", OracleDbType.Varchar2); 
      outHtml.Direction = ParameterDirection.Output; 
      outHtml.Size = Int16.MaxValue; 
      command.Parameters.Add("varParameters", OracleDbType.XmlType).Value = doc; 

      command.ExecuteNonQuery(); 
      ....    

     } 
     connection.Close(); 
    } 

すべてを正常に実行するには、localhostアプリがリモートで公開されました。次のエラーが表示されます。

ORA-06502: PL/SQL: numeric or value error: character string buffer too >small\nORA-06512: at \"TEST_REQUEST \"

私は例外を引き起こす可能性があります。 outパラメータのサイズがかなり高く設定されています。私はODACドライバをチェックしました。何か案は?

+0

それはoutHTMLで動作しますか:= ''?またはoutHTML:= '1'? – jva

+0

動作しません。 – grape

答えて

0

この3つのソリューションを探すことができます。

1)スクリプトを実行する前にバッファサイズを設定してください。

SQL > set serveroutput on buffer 2560000 

2)処理しているデータを確認します。適切に引用されていない文字列データがいくつかあり、それが原因でクラッシュしているようです。

3)またはサイズが問題になることがあります。下記のコードを参照してください。

SQL>

DECLARE 
    2  v_test VARCHAR2(1); 
    3 BEGIN 
    4  v_test := 'bananas'; 
    5 END; 
    6/

DECLARE * ERROR at line 1: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 4

SQL> CREATE TABLE bananas (name VARCHAR2(1)); 

Table created. 

SQL> INSERT INTO bananas (name) VALUES ('One banana two banana'); 
INSERT INTO bananas (name) VALUES ('One banana two banana') 
           * 

ERROR at line 1: ORA-01401: inserted value too large for column

関連する問題