2011-12-28 13 views
0

.netメソッドから呼び出されるストアドプロシージャのパラメータリストを調べる方法があるかどうかは疑問です。行1、列7.net-Oracleストアドプロシージャの呼び出しによるパラメータリストの参照

例外を私は私のストアドプロシージャを呼び出すたび:私は

PLS-00306: wrong number or types of arguments in call to 'SPPUT_FOCUSEDREADMIT' 

ORA-06550を取得しておきます。私は電話をするために設定したオブジェクトを見て、正しく設定しているようです。私はそれを証明するためのコードを表示するためのハウルスがあることを知っているが、私はODP.netのcmd.Parametersオブジェクトを埋めるためにXMLドキュメントをループする。だから私はあなたに私がここで

string[] paths = new string[31]; 
     paths[0] = "EncounterId"; 
     paths[1] = "PopulationPatientID"; 
     paths[2] = "EMPIID"; 
     paths[3] = "Active"; 
     paths[4] = "FirstName"; 
     paths[5] = "LastName"; 
     paths[6] = "DateOfBirth"; 
     paths[7] = "Phone"; 
     paths[8] = "HospitalFinNumber"; 
     paths[9] = "AdmitDate"; 
     paths[10] = "MRNType"; 
     paths[11] = "MRN"; 
     paths[12] = "PatientRoomPhone"; 
     paths[13] = "DischargeDateTime"; 
     paths[14] = "DischargeDisposition"; 
     paths[15] = "DischargeTo"; 
     paths[16] = "DischargeAdvocateCall"; 
     paths[17] = "Payor"; 
     paths[18] = "HomeHealthCareAccepted"; 
     paths[19] = "SafeLandingAccepted"; 
     paths[20] = "PCPName"; 
     paths[21] = "PCPPhone"; 
     paths[22] = "SpecialistName"; 
     paths[23] = "SpecialistPhone"; 
     paths[24] = "PCPAppointmentDateTime"; 
     paths[25] = "PCPAppointmentLocation"; 
     paths[26] = "SpecialistAppointmentDateTime"; 
     paths[27] = "SpecialistAppointmentLocation"; 
     paths[28] = "CompletedPathway"; 
     paths[29] = "CompletedPathwayReason"; 
     paths[30] = "Comment"; 

     string[] colName = new string[31]; 
     colName[0] = "FOCUSED_READMISSIONS_IDIn"; 
     colName[1] = "POPULATION_PATIENT_IDIn"; 
     colName[2] = "EMPIin"; 
     colName[3] = "ACTIVEIn"; 
     colName[4] = "FIRST_NAMEin"; 
     colName[5] = "LAST_NAMEin"; 
     colName[6] = "DOBin"; 
     colName[7] = "PHONEin"; 
     colName[8] = "HOSPITAL_FIN_NUMBERin"; 
     colName[9] = "ADMIT_DATEin"; 
     colName[10] = "MRN_TYPEin"; 
     colName[11] = "MRNin"; 
     colName[12] = "PATIENT_ROOM_PHONEin"; 
     colName[13] = "DISCHARGE_DATEin"; 
     colName[14] = "DISCHARGE_DISPOSITIONin"; 
     colName[15] = "DISCHARGE_TOin"; 
     colName[16] = "DISCHARGE_ADVOCATE_CALLin"; 
     colName[17] = "PAYORin"; 
     colName[18] = "HOME_HEALTHCARE_ACCEPTEDin"; 
     colName[19] = "SAFE_LANDING_ACCEPTEDin"; 
     colName[20] = "PCP_NAMEin"; 
     colName[21] = "PCP_PHONEin"; 
     colName[22] = "SPECIALIST_NAMEin"; 
     colName[23] = "SPECIALIST_PHONEin"; 
     colName[24] = "PCP_APPOINTMENT_DATETIMEin"; 
     colName[25] = "PCP_APPOINTMENT_LOCATIONin"; 
     colName[26] = "SPECIALIST_APPT_DATETIMEin"; 
     colName[27] = "SPECIALIST_APPT_LOCATIONin"; 
     colName[28] = "COMPLETED_PATHWAYin"; 
     colName[29] = "COMPLETED_PATHWAY_REASONin"; 
     colName[30] = "COMMENTSin"; 

...ストアドプロシージャのパラメータリストである... ...右ノードとストアドプロシージャのパラメータリストにXPathのにすべてのコードを表示する必要はありませんを使用します
FOCUSED_READMISSIONS_IDIn NUMBER, 
POPULATION_PATIENT_IDIn  NUMBER, 
EMPIin      VARCHAR2, 
FIRST_NAMEin    VARCHAR2, 
LAST_NAMEin     VARCHAR2, 
DOBin      VARCHAR2, 
PHONEin      VARCHAR2, 
HOSPITAL_FIN_NUMBERin  VARCHAR2, 
ADMIT_DATEin    VARCHAR2, 
MRN_TYPEin     VARCHAR2, 
MRNin      VARCHAR2, 
PATIENT_ROOM_PHONEin  VARCHAR2, 
DISCHARGE_DATEin   VARCHAR2, 
DISCHARGE_DISPOSITIONin  VARCHAR2, 
DISCHARGE_TOin    VARCHAR2, 
DISCHARGE_ADVOCATE_CALLin VARCHAR2, 
PAYORin      VARCHAR2, 
HOME_HEALTHCARE_ACCEPTEDin VARCHAR2, 
SAFE_LANDING_ACCEPTEDin  VARCHAR2, 
PCP_NAMEin     VARCHAR2, 
PCP_PHONEin     VARCHAR2, 
SPECIALIST_NAMEin   VARCHAR2, 
SPECIALIST_PHONEin   VARCHAR2, 
PCP_APPOINTMENT_DATETIMEin VARCHAR2, 
PCP_APPOINTMENT_LOCATIONin VARCHAR2, 
SPECIALIST_APPT_DATETIMEin VARCHAR2, 
SPECIALIST_APPT_LOCATIONin VARCHAR2, 
COMPLETED_PATHWAYin   VARCHAR2, 
COMPLETED_PATHWAY_REASONin VARCHAR2, 
COMMENTSIn     VARCHAR2, 
ACTIVEIn     VARCHAR2, 
ACTIVE_DATEIn    VARCHAR2 

しかし、そのコードはポイントの横にあります。 .net関数から呼び出されたときに、格納されているprocに送信されているものを表示するにはどうすればよいですか。 SQL Developerから呼び出すとうまくいくと思われるからです。

答えて

1

実際には、Oracleパラメータ・リストで32個のパラメータがカウントされますが、31個で呼び出しているだけです。これは実際に質問には答えませんが、エラーの原因です。

Oracleからパラメータのリストを見つける方法はたくさんあります。 describeまたはストアドプロシージャdbms_metadata,dbms_describeを使用できます。システムテーブルとビューがあります。all_proceduresuser_argumentsなど

user_argumentsは、おそらくあなたに役立つ可能性の高いものです。

+0

最初の観察だけで価値があるのは、その金の金額です。私はそれらの最初の3つは、何らかの並べ替えのコマンド(または格納されているproc呼び出し)を推測しています。 user_argumentsはかなり良いように聞こえる。ユーザーのセッション(ストアドプロシージャを呼び出したとき)にアクションを取る必要がありますか、または履歴データを見ることができる何らかの方法がありますか? – SoftwareSavant

+0

私はそんなに馬鹿です。私は関数呼び出しを行う前に、リストの最後にもう一つ引数をつけることを忘れています。私はそれを示すコードを更新します。私はそれを少なくとも1日に2回は落とさなければならない。 – SoftwareSavant

+0

最初のものはSQL * Plusで、 'dbms _... 'は実際にはstored_procsです(これらはすべて、さまざまなメソッドの説明へのリンクです)。このコンテキストの 'User'は' schema'を意味するので、procを実行しているスキーマと同じスキーマで行う限り、ここで何かにアクセスしたり、何か問題を起こすべきではありません。私が知っている限り、システムテーブルの履歴を見る方法はありません。一度彼らはそこに更新されているので。あなたはバージョン管理ソフトウェアのいくつかの形式を使用する必要がありますので、あなたはあなたのprocが以前のようなものだったのを見ることができますか? – Ben

関連する問題