我想知道是否有某種方法來查看從.net方法調用的存儲過程的參數列表。每當我打電話給我的存儲過程的第1行,第7列監視.net-Oracle存儲過程調用以查看參數列表
例外:我不斷收到
PLS-00306: wrong number or types of arguments in call to 'SPPUT_FOCUSEDREADMIT'
ORA-06550。我查看了我設置的用於進行呼叫的對象,並且似乎正確設置了它。我知道會有嚎叫讓我展示代碼來證明它,但是我通過XML文檔循環來填充ODP.net的cmd.Parameters對象...因此,我將向您展示我使用XPath來正確的節點和存儲過程的參數列表...沒有必要顯示所有的代碼...
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";
這裏是存儲過程的參數列表...
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函數調用存儲過程時,如何查看正在發送的內容。因爲當我從sql Developer調用它時,它似乎工作得很好。
單是第一次觀察值得是黃金的重量。我猜這些前三個是某種類型的命令(或存儲的proc調用)。 user_arguments聽起來很不錯。我需要對用戶的會話採取行動嗎(當他調用存儲過程時)還是以某種方式查看歷史數據? – SoftwareSavant 2011-12-28 13:34:46
我真是個傻瓜。在我進行函數調用之前,我一直忘記我在該列表的末尾追加了一個參數。我將更新代碼以表明這一點。我必須每天至少參加兩次。 – SoftwareSavant 2011-12-28 13:52:00
第一個是SQL * Plus,'dbms _...'確實是stored_procs(它們是指向各種方法描述的所有鏈接)。在這個上下文中,'User'的意思是'schema',因此,只要你在你執行proc的模式中使用相同的模式,你就不應該在這裏訪問或使用任何問題。據我所知,沒有辦法查看系統錶的歷史記錄;因爲一旦他們在那裏被更新,他們就是。你應該使用某種形式的版本控制軟件,這樣你可以看到你的過程是什麼樣子? – Ben 2011-12-28 13:55:10