On Mon, 13 Sep 2004 14:36:41 +0100, "Darren Guy" <(E-Mail Removed)> wrote:
¤ I am getting the following error message when trying to execute an oracle
¤ stored procedure with in and out parameters only.
¤
¤ ora-06550 line 1, column 7:
¤ pls-00306 wrong number or types of aurguments in call to 'GETUSERDETAILS'
¤ pl/sql statement ignored.
¤
¤ The code for the sp is a follows:
¤
¤ create or replace procedure GetUserDetails (
¤ LoginName_in in security.loginname%TYPE,
¤ UserPassword_in in security.UserPassword%TYPE,
¤ UserID out security.userid%TYPE,
¤ FullName out security.fullname%TYPE,
¤ HelpDesk_out out security.helpdesk%TYPE,
¤ MenuNo_out out security.menuno%TYPE,
¤ PasswordExpires_out out security.PasswordExpires%TYPE,
¤ Expires_out out security.Expires%TYPE,
¤ Change_out out security.Change%TYPE,
¤ DesignForms_out out security.DesignForms%TYPE,
¤ LoginDateTime_out out security.LoginDateTime%TYPE,
¤ WebLoginDateTime_out out security.WebLoginDateTime%TYPE,
¤ UserType_out out security.UserType%TYPE,
¤ PWExpiry_out out security.PWExpiry%TYPE,
¤ LastPWChangeDate_out out security.LastPWChangeDate%TYPE,
¤ ADsPath_out out security.ADsPath%TYPE,
¤ LastMachineLogOn_out out security.LastMachineLogOn%TYPE,
¤ result out number)
¤ /*
<snip>
¤ oSecDB.CreateParameter("@UserPassword",
¤ AssistDataFactory.DATATYPES.VARCHAR, 50, 0, ParameterDirection.Input,
¤ Encrypt(tbUserPassword.Text));
¤ oSecDB.CreateParameter("@UserID", AssistDataFactory.DATATYPES.INT, 0, 0,
¤ ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@FullName", AssistDataFactory.DATATYPES.VARCHAR,
¤ 40, 0, ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@HelpDesk", AssistDataFactory.DATATYPES.INT, 0,
¤ 0, ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@MenuNo", AssistDataFactory.DATATYPES.INT, 0, 0,
¤ ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@PasswordExpires",
¤ AssistDataFactory.DATATYPES.DATETIME, 0, 0, ParameterDirection.Output,
¤ null);
¤ oSecDB.CreateParameter("@Expires", AssistDataFactory.DATATYPES.INT, 0,
¤ 0, ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@Change", AssistDataFactory.DATATYPES.INT, 0, 0,
¤ ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@DesignForms", AssistDataFactory.DATATYPES.INT,
¤ 0, 0, ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@LoginDateTime",
¤ AssistDataFactory.DATATYPES.DATETIME, 0, 0, ParameterDirection.Output,
¤ null);
¤ oSecDB.CreateParameter("@WebLoginDateTime",
¤ AssistDataFactory.DATATYPES.DATETIME, 0, 0, ParameterDirection.Output,
¤ null);
¤ oSecDB.CreateParameter("@UserType", AssistDataFactory.DATATYPES.INT, 0,
¤ 0, ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@PWExpiry", AssistDataFactory.DATATYPES.INT, 0,
¤ 0, ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@LastPWChangeDate",
¤ AssistDataFactory.DATATYPES.DATETIME, 0, 0, ParameterDirection.Output,
¤ null);
¤ oSecDB.CreateParameter("@ADsPath", AssistDataFactory.DATATYPES.VARCHAR,
¤ 255, 0, ParameterDirection.Output, null);
¤ oSecDB.CreateParameter("@LastMachineLogOn",
¤ AssistDataFactory.DATATYPES.VARCHAR, 255, 0, ParameterDirection.Output,
¤ null);
¤ oSecDB.CreateParameter("@result", AssistDataFactory.DATATYPES.INT, 0, 0,
¤ ParameterDirection.Output, null);
<snip>
¤ I have tested the procedure in sql*plus and it works correctly.
¤ The factory that I am using does correct create an OracleCommand object. I
¤ am sure that it is something simple that I have done wrong. I have tested
¤ the factory using sqlserver and experienced no problems
¤
From what I can see none of the parameter names defined (using CreateParameter) match those defined
in your Oracle sp (e.g. none of them are appended with _in or _out).
Paul ~~~
(E-Mail Removed)
Microsoft MVP (Visual Basic)