Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ORA-02074: cannot ROLLBACK in a distributed transaction

398179Jan 12 2005 — edited Jan 12 2005
I have a stored procedure that successfully creates a portal user when I run it with SQLPLUS.
However when I call the same procedure through ODP.Net, I get the following error.

"ORA-20001: ORA-02074: cannot ROLLBACK in a distributed transaction\nORA-06512: at \"PORTAL30.WWSEC_API\", line 1915\nORA-02074: cannot SET SAVEPOINT in a distributed transaction\nORA-06512: at \"PORTAL30.PRO_CREATE_WEB_USER\", line 28\nORA-06512: at line 1"

The portal version is 3.0.9.8.2 The stored proc is in the portal30 schema and I am connecting as portal30 user.

Any help is greatly appreciated...
Thanks.


The following is the code for the stored procedure:-

CREATE OR REPLACE PROCEDURE PORTAL30.PRO_CREATE_WEB_USER (
puser IN varchar2,
puser_last_name IN varchar2,
puser_first_name IN varchar2,
puser_group IN varchar2,
password IN varchar2
) AS
l_group_id number;
l_id number;
e_code number;
begin
l_id := wwsec_api.add_portal_user(p_User_Name => puser,p_Last_Name => puser_last_name,p_First_Name => puser_first_name,p_Portal_User => 'Y');
wwsec_api.activate_portal_user(puser);
portal30_sso.WWSSO_API_USER_ADMIN.CREATE_USER(P_USERNAME=> puser,P_PASSWORD=>password,p_error_code=> e_code);
wwsec_api.add_user_to_list(p_person_id => l_id,p_to_group_id => wwsec_api.group_id (p_name => puser_group),p_is_owner => wwsec_api.NOT_OWNER);
wwsec_api.set_defaultgroup(p_groupid => wwsec_api.group_id (p_name => puser_group),p_username => puser);
commit;
exception
when others then
raise_application_error(-20001,substr(sqlerrm,1,200));
end;
/

The foll is the code I am using to call the stored proc.

private void createUser()
{
string retval ;
OracleConnection oraconn = new OracleConnection(Data Source=testdb;User ID=portal30;Password=portal30" );
OracleCommand cmd = new OracleCommand("PRO_CREATE_WEB_USER", oraconn);
cmd.CommandType = CommandType.StoredProcedure;

OracleParameter a_uid = new OracleParameter("puser" ,OracleDbType.Varchar2,20);
a_uid.Direction = ParameterDirection.Input ;
a_uid.Value = (txtUserId.Text).Trim() ;
cmd.Parameters.Add(a_uid);

OracleParameter a_last_name = new OracleParameter("puser_last_name" ,OracleDbType.Varchar2,20);
a_last_name.Direction = ParameterDirection.Input ;
if (( txtLName.Text).Trim() != "" )
{
a_last_name.Value = (txtLName.Text).Trim() ;
}
else
{
a_last_name.Value = " ";
}
cmd.Parameters.Add(a_last_name);
OracleParameter a_first_name = new OracleParameter("puser_first_name" ,OracleDbType.Varchar2,20);
a_first_name.Direction = ParameterDirection.Input ;
if ((txtFName.Text).Trim() != "")
{
a_first_name.Value = (txtFName.Text).Trim() ;
}
else
{
a_first_name.Value = " ";
}
cmd.Parameters.Add(a_first_name);

OracleParameter a_type = new OracleParameter("puser_group" ,OracleDbType.Varchar2,20);
a_type.Direction = ParameterDirection.Input ;
a_type.Value = (lstUserType.SelectedValue).Trim() ;

cmd.Parameters.Add(a_type);
OracleParameter a_passwd = new OracleParameter("password" ,OracleDbType.Varchar2,20);
a_passwd.Direction = ParameterDirection.Input ;
a_passwd.Value = (txtPassword.Text).Trim() ;
cmd.Parameters.Add(a_passwd);
try
{
oraconn.Open();
cmd.ExecuteNonQuery();
lblMsg.ForeColor = System.Drawing.Color.FromName("blue");
lblMsg.Text = "User Created.";
}
catch(OracleException e)
{ retval = e.Message ;
lblMsg.ForeColor = System.Drawing.Color.FromName("red");
lblMsg.Text = "Error Creating user" ;
}
finally
{
oraconn.Close();
}
}





Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 9 2005
Added on Jan 12 2005
4 comments
552 views