ASP.NET에서 EF 5.0을 사용하고 있는데, OLEDB를 통해 저장 프로 시저를 실행하면 값이 반환되지만 Entity Framework를 통해 동일하게 실행하려고
ORA-06550: PLS-00201: identifier 'userid' must be declared
하면 문제를 해결하는 데 도움이 되므로 오라클 오류 가 발생합니다. 내 EF 코드 아래에 게시합니다.
Try
Dim db As New Entities
Dim param1 As OracleParameter = New OracleParameter("userid", OracleDbType.Varchar2)
Dim param2 As OracleParameter = New OracleParameter("pass", OracleDbType.Varchar2)
Dim param3 As OracleParameter = New OracleParameter("role", OracleDbType.Varchar2)
Dim param4 As OracleParameter = New OracleParameter("location", OracleDbType.Varchar2)
param1.Value = text1.value
param2.Value = text2.value
param1.Direction = ParameterDirection.Input
param2.Direction = ParameterDirection.Input
param3.Direction = ParameterDirection.Output
param4.Direction = ParameterDirection.Output
db.Database.ExecuteSqlCommand("BEGIN LOGIN_PROC(userid,pass,role,location); END;", param1, param2, param3, param4)
Dim test = param3.Value.ToString
Catch ex As Exception
end Try
많은 검색 끝에 Oracle 커뮤니티에서 기사를 찾았습니다. https://community.oracle.com/thread/2228825?tstart=0 , Graeme의 솔루션이 저에게 적합합니다.
위의 성가신 코드를 완전히 제거하고 Graeme을 따라 작동했습니다.
이 솔루션은 간단하고 단 3 줄의 코드 Add Function to Import
로 Entity Framework 5.0에서 반환 값없이 사용해야 하며 그 후에는 매력처럼 작동합니다.
같은 문제가있는 사람들을 위해 여기에 내 코드를 게시하고 있습니다.
Dim Param1 = New ObjectParameter("role", GetType(String))
Dim Param2 = New ObjectParameter("location", GetType(String))
db.LOGIN_FUNC(text1.value,text2.value, Param1, Param2)
Dim Role = Param1.Value
Dim Location = Param2.Value
정말 4 시간 넘게 수색을했는데 마침내 얻었습니다. 또한 Graeme (Stackflow Member)에게도 감사드립니다 ..
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다