2011-04-27 2 views
0

Oracle 명령어 dbms_output.get_line을 사용하여 저장 프로 시저에서 결과를 검색하고 있습니다. 코드가 명령을 실행하면 32000 바이트 길이의 버퍼 문자열을 통해 결과를 가져옵니다..NET 문자열에서 Oracle 줄 바꿈 문자 바꾸기

불가피 오라클 라인을해야합니다이 문자열은 중단 (CHR (10)와 CHR (13)) 내가 Environment.NewLine로 교체하고 싶습니다 그것에 그래서 표준 출력을 표시 할 수 있습니다 Winforms 텍스트 상자.

여기에 제가 사용 해본 코드가 있습니다. 지금 당장 오라클 명령을 어디서 받았는지 기억하지 못합니다.하지만 찾으면 링크를 추가 할 것입니다.

Dim cmdGetOutput As New OracleCommand("declare " & _ 
" l_line varchar2(255); " & _ 
" l_done number; " & _ 
" l_buffer long; " & _ 
"begin " & _ 
" loop " & _ 
" exit when length(l_buffer)+255 > :maxbytes OR l_done =1; " & _ 
" dbms_output.get_line(l_line, l_done); " & _ 
" l_buffer := l_buffer || l_line || chr(10); " & _ 
" end loop; " & _ 
" :done := l_done; " & _ 
" :buffer := l_buffer; " & _ 
"end;", cnOracle) 

cmdGetOutput.Parameters.Add("maxbytes", OracleType.Int16) 
cmdGetOutput.Parameters("maxbytes").Value = 32000 
cmdGetOutput.Parameters.Add("done", OracleType.Int16) 
cmdGetOutput.Parameters("done").Direction = ParameterDirection.Output 
cmdGetOutput.Parameters.Add("buffer", OracleType.LongVarChar, 32000) 
cmdGetOutput.Parameters("buffer").Direction = ParameterDirection.Output 

Dim strOutput As List(Of String) = New List(Of String) 
Dim intStatus As Integer = 0 
Try 
    While True 
     cmdGetOutput.ExecuteNonQuery() 
     strOutput.Add(cmdGetOutput.Parameters("buffer").Value) 
     If cmdGetOutput.Parameters("done").Value = 1 Then 
     Exit While 
     End If 
    End While 
Catch ex As Exception 
    MsgBox(ex.Message) 
Finally 
    For ixLines as Integer = 0 to strOutput.Count - 1 
     txtOutput.Text = txtOutput.Text & strOutput(ixLines) 
    Next 
End Try 

실행할 때 txtOutput은 개행 문자가 있어야하는 위치에 상자 문자를 갖습니다.

모두에게 도움을 주셔서 감사합니다.

답변

0

먼저 코드를 컴파일해서는 안됩니다. List (String)를 TextBox.Text 속성에 할당 할 수 없습니다.

초, String 클래스는 Replace (searchstring, replacementstring) 메서드를 정의합니다.

+0

오라클의 Chr (10)과 Chr (13)이 .NET과 다르다고 생각했지만 잘못되었습니다. – Riddari