Current user executing a statement

I need to find the user behind an insert statement. In the after insert trigger I execute a procedure which inserts into an audit table(which I designed)username, terminal, program and timestamp for that insert action which determined the trigger.
I tried with V$SESSion, but it gives information about all the users in the session.
user_users doesn't help me as I may have the same user connected thtough two or more terminals.
With user_resumable I can get no data, as the select from user_resumable doesn't return anything either in the trigger or in the procedure.
Any help???
Thanks,

There are a bunch of different attributes you can access via sys_context, including the machine name, user name, client IP address, etc. A full list of the attributes is available in the Oracle SQL Reference http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/functions122a.htm#88703
You can do something like
SELECT *
  FROM v$session
WHERE audsid = sys_context( 'USERENV', 'SESSIONID' )to get everything from v$session of the current session.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC

Similar Messages

  • Finding the currently executed SQL statement

    Hi,
    We have some users who have submitted some SQL statements which have been running for a very long time.
    Please let me know how to find out the SQL which is being currently being executed and also is it possible to find an estimated time of completion for the statement.
    Regards,
    VN

    You've posted enough to know you need to provide your 4 digit Oracle version.
    >
    We have some users who have submitted some SQL statements which have been running for a very long time.
    Please let me know how to find out the SQL which is being currently being executed and also is it possible to find an estimated time of completion for the statement.
    >
    You can query V$SESSION_LONGOPS. See my reply in this recent thread
    Re: SQL query to see what the db/schema is doing

  • The transaction associated with the current connection has completed but has not been disposed. The transaction must be disposed before the connection can be used to execute SQL statements.

    Hello All,
    I am getting below error can you please help me
    Error:-
    The transaction associated with the current connection has completed but has not been disposed. The transaction must be disposed before the connection can be used to execute SQL statements.

    Perhaps this thread will help you out
    http://stackoverflow.com/questions/11453066/error-the-transaction-associated-with-the-current-connection-has-completed-but
    Best Regards,Uri Dimant SQL Server MVP,
    http://sqlblog.com/blogs/uri_dimant/
    MS SQL optimization: MS SQL Development and Optimization
    MS SQL Consulting:
    Large scale of database and data cleansing
    Remote DBA Services:
    Improves MS SQL Database Performance
    SQL Server Integration Services:
    Business Intelligence

  • Execute Web Template without personalization for the current User

    Hi,
    I executed a BI Web Template, on SAP Enterprise Portal, which has been provided as a Portal content on the detailed navigation section.
    Then, I navigate within the template, and I saved a personalized query view (the status of navigation of the report - applied filters, selected characteristics and key figures), through the button "Save Personalization" (standard command "SAVE_PERSONALIZATION")
    Now, each time the same User executes the same BI query from the detailed navigation,
    he get, as result, the personalized views.
    How to reset the Portal Content to the original query which has been built on Query Designer? (meanings, as it was before pressing the "Save Personalization" button)
    Moreover, is there a standard command for WT buttons like "Back to Start" (which not apply on this), to reset the original state of the query.
    Thanks a lot for your help.

    Hi,
    try useing parameter
    &USE_PERSONALIZATION=false
    when calling the WebTemplate
    regards johannes

  • How to set Current User in moss 2007 for Authentication....

    Hi Team,
    We have current running website where we have user id to login but now requirement is that user will login with his Email address. Email is stored in active directory, I'm able to login with fba authentication.  
    I'm able to retrieve the user id of current user using Email but
    I am NOT able to set that user id for current user for further authentication using Moss 2007.
    Please find the source code for login and authentication page:
    //---------------------------Login Page--------------------//
        public partial class Login : System.Web.UI.UserControl
            #region Decleration
            string LoginStatus = null;
            string UserCurrent = null;
           static SPUser siteuser;
           // private static string _randomNumbercheck;
            //private static bool IsLoggedin;      
            Random random;
            #endregion       
            #region Page Load
            protected void Page_Load(object sender, EventArgs e)
                this.hplchangepw.Visible = false;
                this.hplmytask.Visible = false;
                string desturl = SPContext.Current.Site.Url;
                if (!IsPostBack)
                    try
                        string str;
     SPWeb web = SPContext.Current.Web;
                             SPUser siteuser = web. .CurrentUser; 
                        //SPUser siteuser = spWeb.EnsureUser(username);
                        str = (siteuser == null ? "" : siteuser.ToString());
                        this.Login.TitleText = "";
                        this.Login.DestinationPageUrl = desturl;
                        //if (HttpContext.Current.Request.UrlReferrer != null)
                        //    if (this.Page.User.Identity.IsAuthenticated && ((Session["test1"].ToString() == _randomNumbercheck) || LoginControl.Class1.IsLoggedIn))
                         if (this.Page.User.Identity.IsAuthenticated)
                               // _randomNumbercheck = "";
                                this.hplregister.Visible = false;
                                this.hplforgetpassw.Visible = false;
                                this.hplchangepw.Visible = true;
                                this.hplmytask.Visible = true;
                                this.Login.Visible = false;
      if (str.StartsWith("fba_"))
                                    string name = str.Split(':').GetValue(1).ToString();
                                    LoginnameLbl.Text = "<b>" + name.ToString() + "</b>,<br><br>Haryana Urban Development Authority Welcomes
    You. <br><br><br><b><i>\"In The Service Of Masses\"</i></b>";
                                else
                                    string name = str.Split('\\').GetValue(1).ToString();
                                    LoginnameLbl.Text = "<b>" + name.ToString() + "</b>,<br><br>Haryana Urban Development Authority Welcomes
    You. <br><br><br><b><i>\"In The Service Of Masses\"</i></b>";
                            else
                                this.hplchangepw.Visible = false;
                                this.hplmytask.Visible = false;
                                this.Login.Visible = true;
                                LoginnameLbl.Text = "";
                                HttpContext.Current.Session.Clear();
                                HttpContext.Current.Session.Abandon();
                    catch (Exception ex)
                        //HttpContext.Current.Session.Clear();
                        //HttpContext.Current.Session.Abandon();
            #endregion
            #region Get Audit Informations
            public void GetUserInfo()
                try
                    string user = Login.UserName;
                    SPSecurity.RunWithElevatedPrivileges(new SPSecurity.CodeToRunElevated(delegate()
                        using (SPSite oSite = new SPSite(SPContext.Current.Site.ID))
                            using (SPWeb web1 = oSite.OpenWeb(SPContext.Current.Web.ID))
                                SPListItem item = null;
                                SPListItemCollection listItems = null;
                                web1.AllowUnsafeUpdates = true;
                                siteuser = web1.EnsureUser(Session["User"].ToString());// spWeb.EnsureUser(login);
                                listItems = web1.Lists["Audit_Trail"].Items;
                                item = listItems.Add();
                                item["User_ID"] = UserCurrent.ToString(); //Request.ServerVariables["AUTH_USER"];
                                string ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                                if ((ip == null) || (ip == "") || (ip.ToLower() == "unknown"))
                                    ip = Request.ServerVariables["REMOTE_ADDR"];
                                item["IP_Address"] = ip;
                                item["Login_Date"] = System.DateTime.Now;
                                item["Login_Status"] = LoginStatus.ToString();
                                item.Update();
                                web1.AllowUnsafeUpdates = false;
                                web1.Dispose();
                                oSite.Dispose();
                catch (Exception ex)
            #endregion
            #region MD5Encryption
            private string MD5Encryption(string strToEncrypt)
                System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding();
                byte[] bytes = ue.GetBytes(strToEncrypt);
                // encrypt bytes
                System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
                byte[] hashBytes = md5.ComputeHash(bytes);
                // Convert the encrypted bytes back to a string (base 16)
                string hashString = "";
                for (int i = 0; i < hashBytes.Length; i++)
                    hashString += Convert.ToString(hashBytes[i], 16).PadLeft(2, '0');
                return hashString.PadLeft(32, '0');
            #endregion
            #region Generate Random Code
            private string GenerateRandomCode()
                random = new Random();
                string s = "";
                for (int i = 0; i <= 6; i++)
                    s = string.Concat(s, this.random.Next(10).ToString());
               // _randomNumbercheck = s;
                return s;
            #endregion
            #region Generate Random String
            public string GenerateHashKey()
                StringBuilder myStr = new StringBuilder();
                myStr.Append(Request.Browser.Browser);
                myStr.Append(Request.Browser.Platform);
                myStr.Append(Request.Browser.MajorVersion);
                myStr.Append(Request.Browser.MinorVersion);
                myStr.Append(Request.LogonUserIdentity.User.Value);
                SHA1 sha = new SHA1CryptoServiceProvider();
                byte[] hashdata = sha.ComputeHash(Encoding.UTF8.GetBytes(myStr.ToString()));
                return Convert.ToBase64String(hashdata);
            #endregion
            #region Check User Authentication
            protected void Login_Authenticate(object sender, AuthenticateEventArgs e)
                Utility hu=new Utility();
                int CheckValue = 0;
                string user = Login.UserName;
                if(user.Contains("@"))
                    CheckValue=1;
                //Encrypted Password
                string HPassword = hash.Value;
                // Verify that the username/password pair is valid
                SqlConnection con = new SqlConnection();
                SqlCommand cmd = new SqlCommand();
                con.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["FBAPortalConnection"];
                if (con.State == ConnectionState.Closed)
                    con.Open();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "sp_Portal_ValidatePortalUser";
                cmd.Connection = con;
                cmd.Parameters.Add("@ID", SqlDbType.NVarChar, 256).Value = Login.UserName;
                cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 300).Value = HPassword.ToString();
                cmd.Parameters.Add("@CheckVal", SqlDbType.Int).Value = CheckValue;
                cmd.Parameters.Add(new SqlParameter("@P_Return", SqlDbType.NVarChar, 256));
                cmd.Parameters["@P_Return"].Direction = ParameterDirection.Output;
                cmd.ExecuteNonQuery();
                string CurrentUserName = cmd.Parameters["@P_Return"].Value.ToString();
                cmd.Dispose();
                con.Close();
                //int x = hu.ValidatePortalUser(Login.UserName, HPassword.ToString(), CheckValue);
                if (CurrentUserName != "0")
                    Page.Session["User"] = CurrentUserName;
                    string UserName = Session["User"].ToString();
                    UserCurrent = UserName;
                    LoginStatus = "Successfull";
                    GetUserInfo();
                    e.Authenticated = true;
                    //Session["CustomAuthKey"] = MD5Encryption(Request.ServerVariables["Remote_Addr"] + Request.ServerVariables["Http_Cookie"] + Request.ServerVariables["Auth_User"]);
                    Session["CustomAuthKey"] = MD5Encryption(Request.ServerVariables["Remote_Addr"] + Request.ServerVariables["Http_Cookie"] + UserCurrent.ToString());
                    FormsAuthenticationTicket tkt;
                    String cookiestr;
                    HttpCookie ck;
                    tkt = new FormsAuthenticationTicket(1, UserName, DateTime.Now, DateTime.Now.AddMinutes(15), false, GenerateHashKey());
                    cookiestr = FormsAuthentication.Encrypt(tkt);
                    ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
                    ck.Path = FormsAuthentication.FormsCookiePath;
                    Response.Cookies.Add(ck);
                else
                    // Username/password are not valid...
                    Login.FailureText = "Invalid Username / password";
                    e.Authenticated = false;
            #endregion
            #region Login Error
            protected void Login_LoginError(object sender, EventArgs e)
                // Determine why the user could not login
                Login.FailureText = "Your login attempt was not successful. Please try again.";
                // Does there exist a User account for this user
                MembershipUser usrInfo = Membership.GetUser(Login.UserName);
                if (usrInfo != null)
                    // Is this user locked out?
                    if (usrInfo.IsLockedOut)
                        Login.FailureText = "Your account has been locked out because of too many invalid login attempts. Please contact the administrator to have your account unlocked.";
                    else if (!usrInfo.IsApproved)
                        Login.FailureText = "Your account has not yet been approved. You cannot login until an administrator has approved your account.";
                    else
                        Login.FailureText = "Invalid UserName / Password";
                        UserCurrent = usrInfo.UserName;
                        LoginStatus = "UnSucessfull";
                        GetUserInfo();
                else
                    Login.FailureText = "Invalid UserName / Password";
            #endregion
            #region Logged In
            protected void Login_LoggedIn(object sender, EventArgs e)
                string UserName = Session["User"].ToString();           
                LoginControl.Class1.IsLoggedIn = true;
                //If User Email is [email protected] it will be invalid. Prompt the user to update the email id. 
                LoginControl.Utility hu = new LoginControl.Utility();
                DataSet dsuser = hu.getUserDetails(UserName);
                string email;
                if (dsuser.Tables[0].Rows.Count > 0)
                    email = dsuser.Tables[0].Rows[0]["Email"].ToString();
                    if (email.Equals("[email protected]"))
                        Response.Redirect("/Pages/UserUpdates.aspx", true);
                    else
            #endregion
    //-------------------------------- Authentication code----------------------------//
      private void authenticateuser()
                try
                    if (SPContext.Current.Web.CurrentUser != null)
                        using (SPSite spSite = new SPSite(SPContext.Current.Site.Url))
                            using (SPWeb spWep = spSite.OpenWeb())
                                Utility hu = new Utility();
    _userid = spWep.CurrentUser.Name;
                                DataSet ds = new DataSet();
                                ds = hu.GetPlotid(_userid);
                                if (ds.Tables[0].Rows.Count > 0)
                                    _plotid = ds.Tables[0].Rows[0]["plotid"].ToString();
                                else
                                    if (!SPContext.Current.Web.UserIsSiteAdmin && !SPContext.Current.Web.UserIsWebAdmin)
                                        if (!SPContext.Current.Web.IsCurrentUserMemberOfGroup(SPContext.Current.Web.Groups["Allottee"].ID))
                                            SPUtility.HandleAccessDenied(new Exception("You do not have access to this page"));
                    else
                    { SPUtility.HandleAccessDenied(new Exception("Please login")); }
                catch (Exception ex)
                    //  lblMessage.Text = "Error:" + ex.Message;
                    ShowMessage("Following error has occured while executing the desried event :- " + ex.Message);
    Mohan Prakash

    1. Current work flow :-In web site the user have to register themselves in the web site and enters his details along with user id, password and email id. Once user
    is registered then he will login with his user id and password. The user id is picked from login control and that set in “SPWeb.CurrentUser” as user id and system uses "Membership.ValidateUser" method to Authenticate user for login. 
    2. New Requirement: we would like to facilitate the user to login with Email id as well as user id. 
    Problem: 
    We replaced "Membership.ValidateUser" method to our own method to Authenticate user with email id/user id and password. 
    When user is login with user id and password it is working successfully but in the case of email id and password –“the email id is picked from user control and set as
    "HttpContext.Current.User.Identity.Name" but we are not getting “SPWeb.CurrentUser” and it shows null value.” 
    We are able to get user id from database using email id of user. Please help us how we can set user id in "SPContext.Current.Web.CurrentUser".
    Mohan Prakash

  • Microsoft Word Has Not Been Installed for the Current User

    Hi, everybody
    I'm just starting our attempt to put together ZfD app packages for MS Office 2007. I've tried 2 different route with poor results for each. I'm looking for guidance and suggestions and, hey really, the simple final solution. :)
    Objectives: Each app package will install locally one of the Office apps (e.g., Word) if it is not installed and then launch it, otherwise it will launch it. It gets installed locally to the C: drive using all the MS default choices, but runs from the desktop ZEN/NAL shortcut. All desktops are XP, not Vista or W7.
    Routes tried and failed...
    1) Simple app, uses distribution and run scripts to figure out if already installed, then installs using network shared drive and config.xml file for just the one app. The result ought to work -- no particular error in the package, those are fixed -- but what happens is something different each time with the MS setup.exe, and it never does complete without its own error (various and different each time). So, this appears to be completely unreliable because launching MS's setup.exe from a simple app is unpredictable and incomplete.
    2) Snapshot of a successful setup.exe and config.xml install. This ALMOST works... well it does in fact work but the snapshotted app gives an error once it finishes launching -- "Microsoft Word Has Not Been Installed for the Current User" -- and exits. From the research I've done on this message, the MS program sees the "wrong" Windows profile on the destination environment, compared to that in the snapshot, and figures it's now been installed from a bootleg copy of Office 2007.
    At this stage all I can think of is expletives. We've paid for everything, I've followed all the usual and customary steps, played by the rules, been polite (and also used the necessary computer swear words), and now I just want to insult everyone in Microsoft's marketing department for ruining everyone's life yet again. Can't we just do this, is it too much to ask!?!
    Please help me. What is really going to work for distributing and maintaining Office 2007 apps using our ZfD environment? ALL USEFUL SUGGESTIONS WELCOME. Thank you. Bless you.
    -Kent S.
    Be strong as a ship and wise as a whale

    These questions are really best in the Microsoft Office Forums.
    These are MS Office Questions not ZEN Questions.
    Novell did not design Microsoft's Office Install.
    I have nothing against snapshots, but it does not work great with the Office
    installs, which you yourself know since you are posting here with problems
    based on that.
    And your other method you are trying with the break out is not working well.
    We also know that from experience.
    We can tell you that the way most people install it and the way most people
    succeed doing it, is by doing it the way recommended and designed by
    Microsoft.
    ZEN does that just fine.
    Craig Wilson - MCNE, MCSE, CCNA
    Novell Knowledge Partner
    Novell does not officially monitor these forums.
    Suggestions/Opinions/Statements made by me are solely my own.
    These thoughts may not be shared by either Novell or any rational human.
    "KentFSmith" <[email protected]> wrote in message
    news:[email protected]...
    >
    > Thank you, Grimlock (-Grimlock?-)
    >
    > Through a google search I encountered a very close suggestion, and the
    > poster said they couldn't remember the name of a MS utility but that
    > there was one that would break out the individual MSIs from the Office
    > 2007 setup.exe bundle. The dependent app appears to be a simple and
    > possibly elegant solution, but without a good way to break out the MSIs
    > I don't see how to do anything other than with a config.xml ('Config.xml
    > file in the 2007 Office system'
    > (http://technet.microsoft.com/en-us/l.../cc179195.aspx)).
    >
    > Do you know of that utility and where I can find it?
    >
    > There is a lot of history here now of just doing the individual
    > applications. Everyone gets Word and Excel, but much fewer get
    > PowerPoint and Access. All other reasons aside, a compelling one is the
    > reduced number of help calls to the Help Desk here. Occasionally we
    > also just run the whole Office install for someone who needs some of the
    > odd utilities, but that is easily cost-justifiable for us to break them
    > out as exceptions. Otherwise, we focus 90% of our support on just Word
    > and Excel and it pays off nicely.
    >
    > If we switch to putting full Office 2007 on all PCs then there may be a
    > better approach that include other tools than ZfD, such as the fact that
    > we replace 1/3 of all PCs in the organization each year (so that no
    > hardware is more than 3 years "behind"). We could put 1/3 of all Office
    > 2007 installs into the new PC image. But we still need to support all
    > the use of the apps after the install, so ZfD MUST work well, it simply
    > MUST work well or we're screwed, to use the vernacular. Also, just
    > switching from what we've been doing for years -- single app orientation
    > -- means introducing new-ish issues that have to discover and explain to
    > our comrades, and to adjust our orientation with unknown future costs.
    >
    > But that may end up being the simplest adequate solution. And that's
    > what I want.
    >
    > -K
    >
    > grimlock;1883526 Wrote:
    >> Craig Wilson wrote:
    >> > You should really focus on #1.
    >> > Snapshot is not the way to go.
    >> >
    >> > Details about what is Not working or what random behavior may help
    >> folks.
    >> > Ask in the MS forums may help too. dont' mention zenworks.
    >> > Just say you are installing as Administrator from a share and getting
    >> these
    >> > errors.
    >> >
    >> > While not 100% accurate, it should be good enough to get some good
    >> feedback.
    >> >
    >>
    >> Nor is installing 1 app at a time. Install the whole suite, have an
    >> icon for each app that runs the exe for that app with a dependency on
    >> the another app that points to the installer msi.
    >>
    >> If any user runs any app, it will run if the executable is there
    >> (meaning it's been installed). If the executable is not there then it
    >> calls the dependent application (the installer app) and installs it,
    >> and
    >> then runs it.
    >
    >
    > --
    > KentFSmith
    > ------------------------------------------------------------------------
    > KentFSmith's Profile: http://forums.novell.com/member.php?userid=2927
    > View this thread: http://forums.novell.com/showthread.php?t=391573
    >
    >

  • Get the last query from the current user

    Is there a way to get the last query of the current user, so every query could be log with a database trigger?
    Let's just say I execute:
    DELETE xxxx;
    I tried :
    SELECT T.SQL_TEXT FROM V$SQLAREA T where ADDRESS=(SELECT prev_sql_addr FROM v$session where audsid=userenv('sessionid'));
    But the result of this query is :
    'SELECT T.SQL_TEXT FROM V$SQLAREA T where ADDRESS=(SELECT prev_sql_addr FROM v$session where audsid=userenv('sessionid'))'
    Is there a way to execute a query that would return :
    'DELETE xxxx'
    Thanks

    You could join SQL_ADDR in v$session with ADDRESS in v$sqlarea to determine the SID that executed that SQL statement last. Note that PREV_SQL_ADDR in v$session will indicate the previous SQL he executed. Though you would have to look at these tables very often to get all SQL statements issued. One note here, I think if a different user ran the SAME SQL with just bind var differences the SQL_AREA will only show the last user’s information that executed it.
    BTW - it will show deletes also...

  • Filter output data according to portal current user name in omni portlet

    We have created an omniportlet that connects to a database, and retrives some values into a defined HTML layout.
    We want to filter output data according to our portal current user name
    When we try to use portal.wwctx_api.get_user inside of omni portlet select statement fallowing error occurs.
    Error in executing Query : [ORA-06510: PL/SQL: unhandled user-defined exception ORA-06512: at "PORTAL.WWCTX_SSO", line 1803 ORA-06510: PL/SQL: unhandled user-defined exception ORA-06512: at "PORTAL.WWCTX_SSO", line 1637 ORA-06502: PL/SQL: numeric or value error ORA-06512: at "PORTAL.WWCTX_SSO", line 1865 ORA-06512: at "PORTAL.WWCTX_API", line 183 ]
    Thanks a lot

    hello
    i think you cannot use the portal built-in packages inside omni portlets. Omni portlets is designed to connect to other data source (not only oracle) and Portal API might not be available at these data sources. Therefore, you should not be using these Packages at all!. i tried very hard, but to no avail.. Omni portlet has its own repository!! if you cannot pass the infomration as a parameter, then find a different approach
    Ammar Sajdi
    Amman - Jordan
    oracle consultant

  • CASE not found while executing CASE statement on Submit Form

    Hi to all APEX users and developers.
    I have several APEX applications and they are all working well, but recently I got one strange exception when I try to submit page:
    Session: Fetch session header information
    ...metadata, fetch page info
    ...Validate item page affinity.
    ...Validate hidden_protected items.
    Add error onto error stack
    ...Error data:
    ......message: Error processing request.
    ......additional_info: ORA-06592: CASE not found while executing CASE statement
    ......display_location: ON_ERROR_PAGE
    ......is_internal_error: true
    ......apex_error_code: APEX.UNHANDLED_ERROR
    ......ora_sqlcode: -6592
    ......ora_sqlerrm: ORA-06592: CASE not found while executing CASE statement
    .....error_backtrace: ORA-06512: at "APEX_040100.WWV_FLOW", line 9273
    ......component.type: APEX_APPLICATION_AUTH
    ......component.id: 41350431648668800
    ......component.name: MNRFR
    ...Show Error on Error Page
    ......Performing rollback
    Processes - point: AFTER_ERROR_HEADER
    Processes - point: BEFORE_ERROR_FOOTER
    End Page Processinga
    Page has more than 120 items (most of them are hidden), so my first thought is that page has problem with posting so many items, but APEX error message doesn't hel me at all. Any help would be very appreciated :)
    Almir

    Hi Almir,
    actually it is the 100 page item limit. See (http://download.oracle.com/docs/cd/E17556_01/doc/user.40/e15517/limits.htm)
    I also had a look into the source code and the code at the position where the error gets raised only supports 100 page items.
    Can you have a look into the generated HTML code and look if you have a page items which is mapped to p_t101 or a higher number ?
    I will file a bug to show a better error message.
    Regards
    Patrick
    My Blog: http://www.inside-oracle-apex.com
    APEX Plug-Ins: http://apex.oracle.com/plugins
    Twitter: http://www.twitter.com/patrickwolf

  • Controlling report output based on current user

    Hi all,
    I am building a small app with APEX for a sales team.
    We have the site and app hosted by another company.
    I have built a report showing sales summary for the company. The problem is that the report is showing all sales for all sales people.
    What I want is for the report to show data based on the user that is logged in, so that the user only sees his items.
    In fact, this would be a useful thing to learn for me, because I could use this functionality on several other pager, so this will be a good example for other situations.
    So far I have:
    I have a database table that keeps track of the sales reps.
    Each sales rep in that table is assigned a unique EMP_id, which is an autonumber column of that table, and is also the primary key.
    The table also contains a column named: "User login Name" which is their login ID (the one they use to log into the application.
    Possible solution (I think):
    when user logs into APEX, retrieve their EMP_id from the EMP table based on their login name,
    Hold the EMP_id in a variable for the duration of the session,
    pass the variable to the SQL query for the report in the where clause.
    Is this a good solution? or is there a better way to do this?
    Can anyone advise on how to get this done please,
    Thank you.

    Hi,
    Sorry - I guess I should have said where to create the function!
    You can keep those steps or keep with your own method as both should return the value you need. I usually store the result of that value in G_USER - similar to Tyson's method - when the user logs in and then use :G_USER wherever I want to use it in filters etc. However, if I need to create SQL Views, I have to use the GETCURRENTUSERID() function instead.
    Andy
    ps - I used MIN() in the function to ensure that I only get one value returned. The method SELECT .... INTO .... only allows us to set a variable to one value and, sometimes, more than one value is returned by the SELECT statement and this would generate an error. Of course, there should be just the one value that matches the current user, but I always assume the worst! The statementS:
    SELECT MIN(EMP_ID) into user_id FROM S_USERS WHERE UPPER(LOGIN_ID) = UPPER(v('APP_USER'));
    user_id := CASE WHEN user_id IS NULL THEN 9999999999 ELSE user_id END;could also be written as:
    SELECT EMP_ID into user_id FROM S_USERS WHERE UPPER(LOGIN_ID) = UPPER(v('APP_USER')) AND ROWNUM = 1;
    user_id := CASE WHEN user_id IS NULL THEN 9999999999 ELSE user_id END;or
    SELECT NVL(MIN(EMP_ID), 9999999999) into user_id FROM S_USERS WHERE UPPER(LOGIN_ID) = UPPER(v('APP_USER'));

  • Executing SUBMIT statement in background

    Hello Experts,
    Is it possibe in executing SUBMIT statement in backgound? If yes can anyone provide example code?
    Also in terms of performance tuning how does SUBMIT fares against CALL TRANSACTION? Which is much better in terms of performance.
    Appreciate your answers. Thanks!

    Hi
    There's no difference for the performance:
    if a transaction is assigned to a report (so no dialog program, module pool), it's better to use the SUBMIT if it needs to transfer the value on SELECTION-SCREEN. It can't do it by CALL TRANSACTION.
    DATA: VA_JOBNAME LIKE TBTCO-JOBNAME,
               VN_JOBCOUNT LIKE TBTCO-JOBCOUNT.
    * Open job
      CALL FUNCTION 'JOB_OPEN'
           EXPORTING
                JOBNAME          = VA_JOBNAME
           IMPORTING
                JOBCOUNT         = VN_JOBCOUNT
           EXCEPTIONS
                CANT_CREATE_JOB  = 1
                INVALID_JOB_DATA = 2
                JOBNAME_MISSING  = 3
                OTHERS           = 4.
      CASE SY-SUBRC.
        WHEN 0.
        WHEN OTHERS.
          MESSAGE E208(00) WITH 'Error.
      ENDCASE.
    * Call report
      SUBMIT <REPORT>  USER SY-UNAME
                        VIA JOB VA_JOBNAME NUMBER VN_JOBCOUNT
                        WITH ..................................
                        AND RETURN.
    * Close job
      CALL FUNCTION 'JOB_CLOSE'
           EXPORTING
                JOBCOUNT             = VN_JOBCOUNT
                JOBNAME              = VA_JOBNAME
                STRTIMMED            = 'X'  " start immediatly
           EXCEPTIONS
                CANT_START_IMMEDIATE = 1
                INVALID_STARTDATE    = 2
                JOBNAME_MISSING      = 3
                JOB_CLOSE_FAILED     = 4
                JOB_NOSTEPS          = 5
                JOB_NOTEX            = 6
                LOCK_FAILED          = 7
                OTHERS               = 8.
    Max

  • How to use a Text View to show the current user

    Hi Experts,
    I am using a Text View to show the current logged on user.
    Also i need to retrieve the date of creation of proposal and show it as output parameter.
    I am using the following code but it is not working properly.
    Please help me out regarding the same.
    Method technicalDescription()
    //Attribute User to store user name
    IGPAttributeInfo user = output.addAttribute("USER", IGPAttributeInfo.BASE_STRING);
                user.setMultiplicity(IGPAttributeInfo.MULITIPLICITY_1_1);
    //Attribute date to store current system date           
    IGPAttributeInfo date = output.addAttribute("DATE", IGPAttributeInfo.BASE_DATE);
                date.setMultiplicity(IGPAttributeInfo.MULITIPLICITY_1_1);
    Method execute()
    //getting current system date
    Date currDate = new Date(System.currentTimeMillis());
              contextElement.setDate(currDate);
    //Retrieve Current User Details
    try {
    IWDClientUser user = WDClientUser.getCurrentUser();
    String firstName = user.getFirstName();
    String lastName = user.getLastName();          
    String userName = lastName + " " + firstName;
    contextElement.setUserName(userName);
    } catch (WDUMException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    Method complete()
    output.setAttributeValue("USER", wdContext.currentContextElement().getUserName());
    output.setAttributeValue("Date", wdContext.currentContextElement().getDate());
    Thanks a lot.
    Cheers
    Gaurav Raghav

    There are a few ways, for example declare an IBOutlet for the text field and then use it with NSControl's stringValue: method (inherited by the NSTextField), or bind the value of the text field to a property, etc.  What have you got so far?

  • How to use a Text View to show the current user in WDJ

    Hi Experts,
    I am using a Text View to show the current logged on user.
    Also i need to retrieve the date of creation of proposal and show it as output parameter.
    I am using the following code but it is not working properly.
    Please help me out regarding the same.
    Method technicalDescription()
    //Attribute User to store user name
    IGPAttributeInfo user = output.addAttribute("USER", IGPAttributeInfo.BASE_STRING);
    user.setMultiplicity(IGPAttributeInfo.MULITIPLICITY_1_1);
    //Attribute date to store current system date
    IGPAttributeInfo date = output.addAttribute("DATE", IGPAttributeInfo.BASE_DATE);
    date.setMultiplicity(IGPAttributeInfo.MULITIPLICITY_1_1);
    Method execute()
    //getting current system date
    Date currDate = new Date(System.currentTimeMillis());
    contextElement.setDate(currDate);
    //Retrieve Current User Details
    try {
    IWDClientUser user = WDClientUser.getCurrentUser();
    String firstName = user.getFirstName();
    String lastName = user.getLastName();
    String userName = lastName + " " + firstName;
    contextElement.setUserName(userName);
    } catch (WDUMException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    Method complete()
    output.setAttributeValue("USER", wdContext.currentContextElement().getUserName());
    output.setAttributeValue("Date", wdContext.currentContextElement().getDate());
    Thanks a lot.
    Cheers
    Gaurav Raghav

    You can use a text string as the reference.
    If you use the VISA Find Resource function, it will return an array of strings which you can index in your code, and store either the index, or store the string itself. You can even use strings like COM1 and COM2, assuming those ports are available.
    The challenge is when you move from one machine to another, where the serial ports may be different on the other machine.
    Message Edited by LabViewGuruWannabe on 01-07-2008 06:33 AM
    Message Edited by LabViewGuruWannabe on 01-07-2008 06:37 AM
    Attachments:
    VISA find.png ‏5 KB

  • Using to pass the current user while creating a procedure

    I have a .sql script that several people use to help set-up test beds but some users call the test procedures from a separate schema. The .sql creates a table (TABLE_A) and then a procedure that when run will create a trigger on a separate table (TABLE_B) that basically writes all info to TABLE_A. The problem is that if the .sql is run under schema SCOTT and then the procedure is run from schema JOE to create a trigger on JOE.TABLE_B, the trigger will try to write copy info to just TABLE_A instead of SCOTT.TABLE_A. My plan is to add a new input variable to the procedure for the schema where the procedure is located and set the default to the schema of the user running the .sql.
    I can't seem to figure out how to call the current user and then pass it to a procedure as a DEFAULT input variable. Any help would be greatly appreciated.

    OK, sadly, that did not work. What that provided to me was user that runs the procedure. If I run it as SCOTT it gives me SCOTT, but if I run as JOE, it gives me JOE.
    I created an example of what I am trying to do (it is all run in a .sql file). Let me know if this is a bad example....
    CREATE TABLE TABLE_A (
    tranid VARCHAR2(20) Primary Key,
    db_user varchar2(100) not null,
         old_val varchar2(100) not null,
    create or replace PROCEDURE TestBuild(OWN2 IN VARCHAR2, TNAME2 IN VARCHAR2, LOC2 IN VARCHAR2) IS
    OWN VARCHAR2(30);
    TNAME VARCHAR2(30);
    FNAME VARCHAR2(62);
    UNAME VARCHAR2(62);
    COL VARCHAR2(30);
    ST CHAR;
    CONS VARCHAR2(30);
    BEGIN
    OWN := UPPER(OWN2);
    TNAME := UPPER(TNAME2);
    FNAME := OWN||'.'||TNAME;
    UNAME := OWN||'_'||TNAME;
    FILE := SYS.UTL_FILE.FOPEN(LOC2,'TEST_Trig_'||UNAME||'.sql','w');
    SYS.UTL_FILE.PUT_LINE(FILE,'-- Test trigger start');
    SYS.UTL_FILE.PUT_LINE(FILE,'-- generated '||SYSDATE);
    SYS.UTL_FILE.NEW_LINE(FILE,1);
    -- The following trigger fires for EVERY row of each statement for
    -- the specified table.
    SYS.UTL_FILE.PUT_LINE(FILE,'CREATE OR REPLACE TRIGGER Test_trig_'||UNAME||' AFTER INSERT OR UPDATE OR DELETE ON '||FNAME||' ');
    SYS.UTL_FILE.PUT_LINE(FILE,' REFERENCING NEW as n OLD as o FOR EACH ROW');
    SYS.UTL_FILE.PUT_LINE(FILE,' DECLARE');
    SYS.UTL_FILE.PUT_LINE(FILE,' dmltype CHAR(1);');
    SYS.UTL_FILE.PUT_LINE(FILE,' tpid VARCHAR2(30);');
    SYS.UTL_FILE.PUT_LINE(FILE,' BEGIN');
    SYS.UTL_FILE.PUT_LINE(FILE,' tpid := SYS.DBMS_TRANSACTION.LOCAL_TRANSACTION_ID();');
    SYS.UTL_FILE.PUT_LINE(FILE,' IF INSERTING THEN dmltype := ''I'';');
    SYS.UTL_FILE.PUT_LINE(FILE,' ELSIF UPDATING THEN dmltype := ''U'';');
    SYS.UTL_FILE.PUT_LINE(FILE,' ELSIF DELETING THEN dmltype := ''D'';');
    SYS.UTL_FILE.PUT_LINE(FILE,' END IF;');
    SYS.UTL_FILE.PUT_LINE(FILE,' BEGIN');
    SYS.UTL_FILE.PUT_LINE(FILE,' INSERT INTO TABLE_A VALUES (tpid,User,:o.col1);');
    SYS.UTL_FILE.PUT_LINE(FILE,' END IF;');
    SYS.UTL_FILE.PUT_LINE(FILE,' EXCEPTION WHEN already_there THEN NULL;');
    SYS.UTL_FILE.PUT_LINE(FILE,' END;');
    SYS.UTL_FILE.PUT_LINE(FILE,' END;');
    SYS.UTL_FILE.PUT_LINE(FILE,'/');
    SYS.UTL_FILE.PUT_LINE(FILE,'show errors');
    SYS.UTL_FILE.NEW_LINE(FILE,1);
    SYS.UTL_FILE.FCLOSE_ALL;
    dbms_output.put_line('Script for table ['||FNAME||'] created. Now run it in sqlplus. ');
    END;

  • The current user username has not been granted the ADVISOR privilege despite having it !

    Hi,
    I'm trying to follow ML note 2499931.1 'Using Dbms_Advisor.Tune_Mview To Optimize Materialized Views For Fast Refresh' and am receiving an error suggesting the user4 does Not have the Advisor privilege
    despite the fact that it does. What am I missing ?
    Every note I've found so far suggests granting the privilege is the fix.
    I have and continue to receive the error.
    Version 11.2.0.3 on Redhat 5
    select * from dba_sys_privs where grantee = 'SOAUSER';
    GRANTEE                        PRIVILEGE                                ADM
    SOAUSER                        CREATE MATERIALIZED VIEW                 NO
    SOAUSER                        CREATE VIEW                              NO
    SOAUSER                        CREATE PUBLIC SYNONYM                    NO
    SOAUSER                        SELECT ANY DICTIONARY                    NO
    SOAUSER                        ON COMMIT REFRESH                        NO
    SOAUSER                        CREATE ANY DIRECTORY                     NO
    SOAUSER                        CREATE DATABASE LINK                     NO
    SOAUSER                        SELECT ANY TABLE                         NO
    SOAUSER                        ADVISOR                                  NO
    SOAUSER                        UNLIMITED TABLESPACE                     NO
    SOAUSER                        CREATE SESSION                           NO
    Error at line 2
    ORA-13616: The current user SOAUSER has not been granted the ADVISOR privilege.
    ORA-06512: at "SYS.PRVT_ADVISOR", line 4869
    ORA-06512: at "SYS.DBMS_ADVISOR", line 1969
    ORA-06512: at "SYS.PRVT_TUNE_MVIEW", line 490
    ORA-06512: at "SYS.PRVT_TUNE_MVIEW", line 970
    ORA-06512: at "SYS.DBMS_ADVISOR", line 739
    ORA-06512: at line 3
    Thanks in Advance
    Ken

    Sorry, but the code I was receiving the error message for is essentially   the same as the example in the note. Assumed people would have access to the note.
    The statement is:
    variable foo varchar2(20);
    declare foo varchar2(20) := 'ken_foo';
    begin
    dbms_advisor.tune_mview(:foo,
    'create materialized view ken_foo
    as
    select 
    papf.rowid R_papf,
    paaf.rowid R_paaf,
    gcc.rowid R_gcc,
    papf.employee_number,
    gcc.segment4 cost_center
    from hr.per_all_people_f@atc_pp_to_ebs_atcllc papf,
         hr.per_all_assignments_f@atc_pp_to_ebs_atcllc paaf,
         gl.gl_code_combinations@atc_pp_to_ebs_atcllc gcc
    where papf.person_id = paaf.person_id
    --and trunc(sysdate) between papf.effective_start_date and papf.effective_end_date
    --and trunc(sysdate) between paaf.effective_start_date and paaf.effective_end_date
    and paaf.default_code_comb_id = gcc.code_combination_id');
    end;
    Per another forum the answer appears to be that sys didn’t have the advisor privilege.
    Granted advisor to sys and ran the statement again as soauser and no error.
    Thanks
    Ken

Maybe you are looking for