Oracle Stored Procedure PLS-00306 : 잘못된 개수 또는 인수 유형

narue1992

다음 Oracle 오류가 발생합니다.

ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'INSERT_CATEGORY'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

이 오류를 읽었으며 사람들은 저장 프로 시저 유형에 다른 값 유형을 전달하면이 오류가 발생할 수 있지만 저에게는 그렇지 않은 것 같습니다.

여기에 이미지 설명 입력

내 코딩의 대부분은 내가 가진 것과 거의 동일합니다. 이것과의 유일한 차이점은 부울을 사용하고 있으므로 문제가 발생하는지 확실하지 않습니다.

Protected Sub BtnNew_Click(sender As Object, e As EventArgs) Handles BtnNew.Click
    Dim conn As OleDbConnection = New OleDbConnection("Provider=""*******"";user id=" & strUserID & ";data source=" & strDatabase & ";password=" & strPssWd)

    If Page.IsValid Then

        If CatText.Text <> "" Then


            Dim ClassifiedStr As New OleDbCommand

            ClassifiedStr.CommandType = CommandType.StoredProcedure
            'name of stored procedure = 'insert_category'
            ClassifiedStr.CommandText = "insert_category"
            ClassifiedStr.Connection = conn

            'Must be organized based on Stored Procedure
            ClassifiedStr.Parameters.Add("val_category", OleDbType.VarChar, 40).Value = CatText.Text
            conn.Open()

            'Makes sure the Category doesn't already exist****************
            Dim myParm As OleDbParameter = ClassifiedStr.Parameters.Add("val_newcat", OleDbType.Boolean)
            myParm.Direction = ParameterDirection.Output

            ClassifiedStr.ExecuteNonQuery()
            'myParm needs Execute
            Dim standardid As Integer = myParm.Value
            '***********************************************

            If standardid = False Then

                conn.Close()

                Response.Write("<script language=""javascript"">alert('Thanks! Record Has Been Added.');</script>")
                Response.Redirect("DisplayCategories.aspx")
            Else
                Response.Write("<script language=""javascript"">alert('Sorry! Record Already Exist.');</script>")
                Exit Sub
            End If

        Else
            Response.Write("<script language=""javascript"">alert('You must insert a record.');</script>")
            Exit Sub
        End If

    End If

End Sub

저장 프로 시저

CREATE OR REPLACE PROCEDURE insert_category
(val_category        TABLENAME.Category%type, 
 val_newcat out boolean) 

as num_catid number;  

begin   

select category_seq.nextval into num_catid from dual;   

  INSERT INTO TABLENAME  
   (select num_catid, val_category from TABLENAME WHERE Category != val_Category);  

commit; 

  val_newcat := SQL%FOUND; 

end;
narue1992

문제를 해결 한 업데이트 :

Dim ClassifiedStr As New OleDbCommand

ClassifiedStr.CommandType = CommandType.StoredProcedure
'name of stored procedure = 'insert_category'
ClassifiedStr.CommandText = "insert_category"
ClassifiedStr.Connection = conn

'Must be organized based on Stored Procedure
ClassifiedStr.Parameters.Add("val_category", OleDbType.VarChar, 40).Value = CatText.Text
conn.Open()

'Makes sure the Category doesn't already exist
Dim myParm As OleDbParameter = ClassifiedStr.Parameters.Add("val_newcat", OleDbType.VarChar, 10)
myParm.Direction = ParameterDirection.Output

ClassifiedStr.ExecuteNonQuery()
'myParm needs Execute before declared

Dim standardid As String = myParm.Value

'***********************************************

If standardid = "TRUE" Then

    conn.Close()
    etc....

저장 프로 시저 :

(val_category        t_category.Category%type,     
val_newcat out varchar2)     

as num_catid number;      

begin       

select newCategory_seq.nextval into num_catid from dual;         

INSERT INTO TABLENAME      
select num_catid, val_category from dual WHERE not exists (select * from TABLENAME where Category = val_Category);      

val_newcat := case SQL%FOUND when TRUE then 'TRUE' else 'FALSE' end;    

commit;     

end;     

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Oracle 절차-PLS-00306 : 잘못된 개수 또는 인수 유형

PLS-00306 : Oracle SP 호출시 잘못된 수 또는 인수 유형

PLS-00306 : 'CREATE_PROGRAM'호출시 잘못된 수 또는 인수 유형

PLS-00306 : 'PUT_LINE'호출시 잘못된 수 또는 인수 유형

oci_execute(): ORA-06550: PLS-00306: 잘못된 수 또는 유형의 인수

Char Out 매개 변수 오류가있는 Oracle 저장 프로 시저 호출 PLS-00306 : 잘못된 수 또는 호출 인수 유형

PLS-00306 : 오라클 함수를 호출 할 때 잘못된 개수 또는 인수 유형

PLS-00306에 대한 알 수없는 이유 : 잘못된 수 또는 인수 유형

사용자 정의 유형을 사용하여 메모리 배열에 생성 - PLS-00306 잘못된 인수 수

Oracle SQL Developer에서 프로 시저를 호출하는 잘못된 수 또는 유형의 인수

'||' 호출 시 잘못된 수 또는 유형의 인수

올바른 매개 변수 이후에도 호출시 잘못된 인수의 수 또는 유형

올바른 매개 변수 이후에도 호출시 잘못된 인수의 수 또는 유형

ORA-06550 : 인수의 개수 또는 유형이 잘못되었습니다

함수를 만드는 동안 잘못된 개체 유형

SpringData Jpa를 사용하는 Oracle의 저장 프로 시저 호출시 인수의 개수 또는 유형이 잘못되었습니다.

반짝이는 verbatimTextOutput이있는 잘못된 인수 유형

잘못된 유형 인수: stringp, org-map-entries가 있는 nil

ODP.Net-사용자 정의 유형 매개 변수로 저장 프로 시저를 호출하면 ORA-06550 / PLS-00306이 발생합니다.

PMT 오류 : 잘못된 인수 개수 또는 잘못된 속성 할당

잘못된 인수 개수 또는 잘못된 속성 할당 : 'OracleNotification'

증분 할 잘못된 유형 인수

잘못된 첫 번째 인수 유형

setq : 잘못된 유형 인수 : listp 1

잘못된 유형의 인수 C

테이블 유형을 반환할 때 Oracle 함수의 잘못된 유형

프로 시저를 호출하는 동안 잘못된 수 또는 인수 유형 오류

"잘못된 유형 매개 변수 수"는 무엇을 의미합니까?

Oracle PLS-00382 : 표현식이 잘못된 유형 06550입니다.