none
.net 응용프로그램에서 oracle 서버 sp 호출시 ORA-06550 PLS-00703 에러가 발생합니다. RRS feed

  • 질문

  • 대부분의 경우 에러없이 처리가 되고 있으나

    일부 고객 PC (주로 windows XP, windows update가 사내 지침으로 전부 되어있지 않은 고객)에서

    쿼리에 대한 필드 목록을 생성할 수 없습니다.
    쿼리 구문을 확인하거나 쿼리 도구 모음에서 새로 고침 필드를 클릭하십시오.
    ORA-06550: 줄 1, 열 7
    PLS-00703: 여러 인스턴스를 목록에서 명명된 인수
    ORA-06550: 줄 1, 열 7
    PL/SQL: 문 무시됩니다.

    라는 오류가 발생합니다.

    어떤 윈도우즈 업데이트를 사용해야 해결이 되는지 알 수 있을까요.

    답변 부탁드립니다.

    2012년 2월 23일 목요일 오전 1:17

모든 응답

  • 안녕하십니까? 김준인 님,

    Microsoft TechNet의Forum 사이트를 방문해 주셔서 감사합니다.

    문의 하신 ”.net 응용프로그램에서 oracle 서버 sp 호출시 ORA-06550 PLS-00703 에러가 발생합니다. ”에 대해 답변드리겠습니다.

    [원인]
    제 생각에는 Oracle 저장 프로시저에서 NULL 값은 숫자 데이터 형식 또는 varchar 데이터 형식의 매개 변수가 전달됩니다. Microsoft .NET 관리 공급자에 대한 Oracle 사용하여 Oracle 저장 프로시저를 호출할 때 매개 변수 번호 데이터 형식 또는 varchar 데이터 형식의 NULL 값을 전달할 DBNull 개체를 명시적으로 사용해야 합니다.
    [해결책]
    동일한 이슈에 관해서 HotFix에서 제공하고있습니다 아래 참조 자료를 통해서 해겱 시도 부탁드립니다.
    [참고자료]
    FIX: 보고서 디자이너에서 보고서 데이터 집합의 필드를 업데이트하려고 할 때 오류가 나타날

    혹시 제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.
    제시해 드린 답변이 도움이 되었기를 바랍니다.

    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.


     

    2012년 2월 23일 목요일 오전 7:25
    중재자
  • 답변 감사드립니다.

    참고자료의 hot fix는 저도 전에 확인해 보았습니다만 "SQL Server 2000 Reporting Services 서비스 팩 2"는 설치가 안되더군요.

    (db가 오라클 서버이며 웹서비스하는 서버에는 IIS만 있으므로 설치 자체가 안됩니다.)

    해결이 아직 안된 상태이며 보다 많은 의견이 필요할 것으로 생각됩니다.

    감사합니다.

    2012년 2월 24일 금요일 오전 4:09
  • 안녕하십니까? 김준인 님,

    Microsoft TechNet의Forum 사이트를 방문해 주셔서 감사합니다.

    문의 하신 ”.net 응용프로그램에서 oracle 서버 sp 호출시 ORA-06550 PLS-00703 에러가 발생합니다. ”에 대해 답변드리겠습니다.

    먼저 SQL Server 2000 Reporting Services 서비스 팩 1 설치를 권유해드립니다. 그 후 문제가 발생하면 위에 서비스 팩 2를 설치 부탁드리겠습니다.

    혹시 제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.
    제시해 드린 답변이 도움이 되었기를 바랍니다.

    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    2012년 2월 24일 금요일 오전 6:34
    중재자
  • 답변 감사드립니다.

    하지만 제가 드린 질문은 SQL Server 2000자체가 설치되어있는 것이 아니라서 서비스 팩 설치가 되지 않습니다.

    서비스팩1이든 2든 설치가 안되는거죠.

    DB서버는 오라클이고 IIS 웹서비스로 프로시저를 호출할때 일부 고객에서만 발생하고 있습니다.

    SP도 체크해보고 했는데 이상없이 작동하거든요.

    윈도우XP를 사용하시는 고객중에 일부만 저런 에러가 발생하고 있어서

    고객 PC의 윈도우즈 업데이트 중 어느 업데이트를 하면 되는지 궁금합니다.

    2012년 2월 27일 월요일 오전 5:20
  • 안녕하십니까? 김준인 님,

    Microsoft TechNet의Forum 사이트를 방문해 주셔서 감사합니다.

    문의 하신 ”.net 응용프로그램에서 oracle 서버 sp 호출시 ORA-06550 PLS-00703 에러가 발생합니다. ”에 대해 답변드리겠습니다.

    현재 저와 같은 에러와 경우 MS제품군을 사용할 경우 Hot Fix로 해결이 가능하오나 타사의 DB사용이기때문에 지원이 불가능한것으로 원인에 따른 해결방안을 찾아보았습니다.

    [원인]
    Oracle 저장 프로시저에서 NULL 값은 숫자 데이터 형식 또는 varchar 데이터 형식의 매개 변수가 전달됩니다. Microsoft .NET 관리 공급자에 대한 Oracle 사용하여 Oracle 저장 프로시저를 호출할 때 매개 변수 번호 데이터 형식 또는 varchar 데이터 형식의 NULL 값을 전달할 DBNull 개체를 명시적으로 사용해야 합니다.

    [해결책]

    다음은 .NET 데이터 아키텍처에서 Null 필드 값을 올바르게 사용하기 위한 일부 팁입니다. 이를 통해 해결이 되지 않을까 싶습니다.

    • 항상 System.DBNull 클래스를 사용하여 Null 필드의 값을 설정합니다. C# 또는 Visual Basic .NET에서 제공된 Null 값을 사용하지 않습니다. 예를 들면 다음과 같습니다.
      rowStudents["Nickname"] = DBNull.Value   // correct!
      
    • 강력하게 형식있는 DataSet에는 DataRow마다 두 개의 추가 메서드가 포함되며 이중 하나의 메서드는 열에 Null 값이 포함되어 있는지 확인하기 위한 것이고 다른 하나는 열 값을 Null로 설정하기 위한 것입니다. 이러한 메서드는 다음 코드 단편에 표시되어 있습니다.
      If (tds.rowStudent[0].IsPhoneNoNull()) {….}
      tds.rowStudent[0].SetPhoneNoNull()
    • 데이터베이스에서 Null 값을 테스트하려면 항상 DataRow 클래스의 IsNull 메서드(또는 이전 단락에서 설명된 강력하게 형식있는 개체)를 사용합니다. 이 메서드는 Null 데이터베이스 값을 테스트하기 위해 지원되는 유일한 방법입니다.
    • 데이터 필드에 Null 값이 포함될 가능성이 있는 경우 비-Null 값을 사용하는 컨텍스트에서 값을 사용하기 전에 IsNull 메서드를 사용하여 Null 값 여부를 테스트하십시오. 이에 대한 일반적인 예는 Null일 수 있는 Integer 값 데이터 필드입니다. .NET 런타임 Integer 데이터 형식에는 Null 값이 포함되지 않습니다. 다음은 구문 예입니다.
      int i = rowStudent["ZipCode"];         // throws exception if null!
      
    • 데이터베이스에서 Null 값이 매핑되는 방법을 구성하려면 강력하게 형식있는 DataSet .xsd 파일의 nullValue 주석을 사용합니다. 기본적으로 예외가 발생합니다. 하지만 보다 세부적인 제어를 위해서는 String.Empty와 같은 지정된 값으로 Null 값을 교체하도록 클래스를 구성할 수 있습니다.

    혹시 제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.
    제시해 드린 답변이 도움이 되었기를 바랍니다.

    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    2012년 2월 28일 화요일 오전 1:30
    중재자