[SOLVED] Where in path to keep my custom bash scripts

Hey Guys,
I apologize if this has been discussed before, I couldn't find another similar discussion in the forum.
Having followed from another discussion I had on arch before, I finally switched from being root to a regular user. However, there is this one little problem that I have now.
Earlier I used to stick my custom scripts in /usr/bin using symlinks. However, now, I clearly can not call these scripts from /usr/bin being a regular user. I have presently solved this problem by adding a "$HOME"/scripts folder to the path and calling my scripts from there. Everything has been tweaked to work again.
But I'd like to know if there is a robust solution to this problem. Where should one, say a sysadmin, keep custom scripts if he'd like users to be able to use them? And what should be safe permissions on these scripts?
Thanks for all suggestions.
Last edited by Dumbledore (2011-09-26 16:28:31)

Umm.. Err.. I feel like a nitwit right now! I can swear that I had tested putting my scripts in /usr/bin earlier and calling the scripts had resulted in Permission Errors even though I had checked for _execute_ permissions then.
So I had removed those scripts from there. Now, since you asked for output, I tried putting a few scripts there again and funnily they are working now!!! Anyhoo, be that as it may, I'll check all of them and get back to this post if I find any other problem.
Meanwhile, I'm sure that Unix has a design philosophy which divides these directories with specific intentions. So, is /usr/bin a good place to keep one's custom scripts in principle?

Similar Messages

  • [SOLVED] problem with spaces and ls command in bash script

    I am going mad with a bash script I am trying to finish. The ls command is driving me mad with spaces in path names. This is the portion of my script that is giving me trouble:
    HOMEDIR="/home/panos/Web Site"
    for file in $(find "$HOMEDIR" -type f)
    do
    if [ "$(dateDiff -d $(ls -lh "$file" | awk '{ print $6 }') "$(date +%F)")" -gt 30 ];
    then echo -e "File $file is $(dateDiff -d $(ls -lh "$file" | awk '{ print $6 }') "$(date +%F)") old\r" >> /home/panos/scripts/temp;
    fi
    done
    The dateDiff() function is defined earlier and the script works fine when I change the HOMEDIR variable to a path where there are no spaces in directory and file names. I have isolated the problem to the ls command, so a simpler code sample that also doesn't work correctly with path names with spaces is this:
    #!/bin/bash
    HOMEDIR="/home/panos/test dir"
    for file in $(find "$HOMEDIR" -type f)
    do
    ls -lh "$file"
    done
    TIA
    Last edited by panosk (2009-11-08 21:55:31)

    oops, brain fart. *flushes with embarrassment*
    -- Edit --
    BTW, for this kind of thing, I usually do something like:
    find "$HOMEDIR" -type f | while read file ; do something with "$file" ; done
    Or put those in an array:
    IFS=$'\n' ; files=($(find "$HOMEDIR" -type f)) ; unset IFS
    for file in "${files[@]}" ; do something with "$file" ; done
    The later method is useful when elements of "${files[@]}" will be used multiple times across the script.
    Last edited by lolilolicon (2009-11-09 08:13:07)

  • [SOLVED] How To Break Up Long Statement In Bash Script?

    Hello Everyone,
      If have the following If statement in a script:
    if [[ $1 =~ ^[A-Fa-f0-9]{4,4}\:[A-Fa-f0-9]{4,4}\:[A-Fa-f0-9]{4,4}\:[A-Fa-f0-9]{4,4}\:[A-Fa-f0-9]{4,4}\:[A-Fa-f0-9]{4,4}\:[A-Fa-f0-9]{4,4}\:[A-Fa-f0-9]{4,4}$ ]]; then
    Is there any way to break this statement into multiple lines? I tried entering a \ after a portion of the statement and then pressing Enter to add a newline but it did not work.
    thriftyb
    Last edited by thriftyb (2015-04-03 21:44:13)

    Alad wrote:
    if grep -xP '(([A-Fa-f0-9]{4}):){7}(?2)' <<< "$1"; then
    http://www.regular-expressions.info/subroutine.html
    That works too. I didn't know that grep could be used that way. Thanks.

  • [SOLVED] How to open default text editor from bash script?

    as header states i would like my script to open the desktops default text editor. I use xfce.
    I currently have it set to open medit, however i want to be able to use script on other desktops
    Last edited by orphius (2013-07-12 07:24:34)

    Trilby wrote:
    EDITOR will often not be the default desktop environment editor - it is usually limited to being a systemwide (and usually console-ready) editor.
    xdg-open, or a related tool, can give you the desktop's text editor.
    Truth. VISUAL is typically used for the graphical text editor.
    So, to use VISUAL if it exists, but otherwise default to medit, do:
    editor="${VISUAL:-medit}"
    $editor foo.txt
    Last edited by jakobcreutzfeldt (2013-07-11 07:09:02)

  • Where we can link the vendor & Customer open and cleared iteams.

    Dear Experts,
               Vendor & Customer open line iteam and clear line iteams tables is BSIK, BSID, BSIAK,BSAD, But where we can link the open iteam and clear iteam, what is the link table of open iteam and cleared iteam. And where we can link the vendor & Customer open and cleared iteams.
    For example vendor & Customer linked table is KLPA.
    Same above the G/L open line iteam and clear line iteams tables is BSIS, BSAS,where we can link the open iteam and clear iteam, what is the link table of open iteam and cleared iteam.
    Thanks in Advance,.
    Srinu.M.

    Sorry to say you but it is mandatory.
    Everybody is trying to help others and solve their problem. When you say i am not asking for that and looking for this, it looks a bit arrogant.
    Tables are
    Customer
    BSID (open items) and BSAD (cleared items)
    Vendor - similarly
    BSAK and BSIK
    Totals
    BSEG, BKPF
    Let us know if you still need any help
    Edited by: nkonnipati on Jan 28, 2012 5:51 AM

  • Where does flex builder keep refererences to the flex projects?

    Where does flex builder keep refererences to the flex projects?
    I'm getting an error like this on FB3 startup:
    The folder PR System Intranet does not exist in the workspace so the reference must be somewhere else.
    thanks
    !SESSION 2009-11-02 09:47:52.203 -----------------------------------------------
    eclipse.buildId=unknown
    java.version=1.5.0_11
    java.vendor=Sun Microsystems Inc.
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_GB
    Command-line arguments:  -os win32 -ws win32 -arch x86
    !ENTRY org.eclipse.core.resources 2 10035 2009-11-02 09:47:53.610
    !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
    !ENTRY org.eclipse.core.resources 4 567 2009-11-02 09:47:53.829
    !MESSAGE Workspace restored, but some problems occurred.
    !SUBENTRY 1 org.eclipse.core.resources 4 567 2009-11-02 09:47:53.829
    !MESSAGE Could not read metadata for 'PR System Intranet'.
    !STACK 1
    org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for 'PR System Intranet' is missing. This file contains important information about the project. The project will not function properly until this file is restored.
    at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceMan ager.java:663)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:792)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:772)
    at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:663)
    at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1319)
    at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:1949)
    at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:1713)
    at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:363)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:9 99)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextIm pl.java:993)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:9 74)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLa zyStarter.java:111)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java :417)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoade r.java:189)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:34 0)
    at org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackag e.java:37)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java :405)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.jav a:83)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at com.adobe.flexbuilder.standalone.FlexBuilderApplication.start(FlexBuilderApplication.java :111)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLau ncher.java:106)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.jav a:76)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
    !SUBENTRY 2 org.eclipse.core.resources 4 567 2009-11-02 09:47:53.829
    !MESSAGE The project description file (.project) for 'PR System Intranet' is missing. This file contains important information about the project. The project will not function properly until this file is restored.
    !ENTRY org.eclipse.osgi 4 0 2009-11-02 09:47:53.860
    !MESSAGE An error occurred while automatically activating bundle org.eclipse.core.resources (161).
    !STACK 0

    Thanks but that file contains things like
    <?xml version="1.0" encoding="UTF-8"?>
    <actionScriptProperties mainApplicationPath="main.mxml" version="3">
    <compiler additionalCompilerArguments="-services &quot;X:\Coldfusion9\wwwroot\WEB-INF\flex\services-config.xml&quot; -locale en_US" copyDependentFiles="true" enableModuleDebug="true" flexSDK="Flex 3.2" generateAccessible="true" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="true" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="Staff_Ratings-debug" sourceFolderPath="src" strict="true" useApolloConfig="false" verifyDigests="true" warn="true">
    <compilerSourcePath>
    <compilerSourcePathEntry kind="1" linkType="1" path="H:/flash"/>
    </compilerSourcePath>
    <libraryPath defaultLinkType="1">
    <libraryPathEntry kind="4" path=""/>
    </libraryPath>
    <sourceAttachmentPath/>
    </compiler>
    <applications>
    <application path="main.mxml"/>
    </applications>
    <modules/>
    <buildCSSFiles/>
    </actionScriptProperties>
    I don't see how FB3 knows about the
    Pr System Intranet
    project that seems to be the cause of the errors.

  • How do I keep a custom letterhead on the first page in Pages 5

    How do I keep a custom letterhead on the first page in pages 5.  I made a custom template using text boxes and when the first page is full, the letterhead moves to the second page and disappears from the first page.  How can I keep it on the first page and not moving to the second page.
    hank

    Hi Hank,
    Text Box at the top of Page 1.
    Select the Text Box and
    Format Panel > Arrange > Object Placement > Stay on Page
    That will stop it moving (flowing) with the text.
    Top of Page 2
    Another way is to put your letterhead in the Page Header of Page 1. Insert a Section Break at the bottom of Page 1 (Click where you want the Section Break and
    Menu > Insert > Section Break).
    Click in Section 2, and
    Document Panel > Section > Headers & Footers > untick Match previous section
    Page 1 with letterhead in the Page Header
    Page 2
    Regards,
    Ian.

  • Where we can use ClearUserInput - Java Custom command?

    Hi,
    Where we can use ClearUserInput - Java Custom command? If anybody has used this command please let us know the respective scenario in detail.
    Thanks

    Clear user input—Clears user-input values and returns to the original calculated or loaded
    value. The following code retrieves baseline loaded values
    ConstraintSolver.MyRule.classname=com.interlacesystems.rules.ClearUserI
    nput
    ConstraintSolver.MyRule.description=Clear Measures from DriveDemand cube
    ConstraintSolver.MyRule.Cube=DriveDemand
    ConstraintSolver.MyRule.Measures=MS DEMAND,MS DRIVE DEMAND
    In this example, the classname is com.interlacesystems.rules.ClearUserInput
    and the parameters are cube and measures.
    This is input into the \custom\config\site.properties file and invoked from an isadmin command alter system solve constraint using rule "MyRule"

  • Hi, how can I limit the number of emails I can see on my iPhone 5. Every time in delete one and older email gets added from my live.co.uk account (where I want to keep my 2500 emails) I just don't want many on my phone. Thanks

    Hi, how can I limit the number of emails I can see on my iPhone 5. Every time in delete one and older email gets added from my live.co.uk account (where I want to keep my 2500 emails) I just don't want many on my phone. Thanks

    You can't. Why on earth would you attempt to manage 2500 emails with setting up a folder structure or some means of doing so? Simply keeping them in an single inbox is not realistic, no matter what email client you use.

  • How do I...Mimic Replacement Path with Query using Customer Variable Exits?

    Hello SDN:
    We are on BW 3.5 SP16.
    We are currently using a replacement path Query(RP) with variables
    to populate a variable in another Query(T).
    The problem we are having is with performance.
    The entry of variables in replacement path Query(RP) is optional (This is necessary there cannot be required values)
    When results from Replacement Path Query are small performance is fine. (e.g. 10 seconds)
    When results from Replacement path query are large performance suffers. (e.g. 1+ minutes)
    Users are free to leave the replacement path variables empty resulting in a large set of data to be replaced. This is the worst performance case.
    We would like to discover a way to conditionally execute the replacement path query. That is if users do not enter values for the replacement Query(RP) variables do not execute the replacement path query(RP).
    Does anyone know if this is possible within reason and in customer exit space?
    We have reviewed the situation from all angles and the requirement for the replacement path FUNCTIONALITY and the freedom for the user to leave variable values blank remains.
    I've been searching and reading SDN and SAP notes for about a week and do not find threads which address this situation.
    We are also exploring Customer variable exits to mimic replacement path functionality
    (different topic subject="How do I...Mimic Replacement Path with Query using Customer Variable Exits?")
    Any help will be appreciated
    Many thanks
    David Schuh

    My appologies-I posted this message with the wrong subject. I will repost it with appropriate subject.
    dave schuh

  • Where does iTunes 7 keep the iPod software?

    Hi All,
    I work in technical support and am a bit let down by the current embedded iPod updater in iTunes 7. This works ok except for one thing, after downloading the latest iPod updater from within iTunes 7, i want to transfer the updater to various machines. Searching the libraries came up with nada. Only once i opened up the iTunes 7 package did i find "iPodUpdater.framework" in contents. It also appears that a different updater is downloaded for each model of iPod as opposed to the old stand-alone all-in-one iPod updater. So, Where does iTunes 7 keep the iPod software? We are very bandwidth challenged in my country so it is very handy to be able to keep the latest updates on an external drive, usb disk, etc.
    While the embedded updater is nice and clever i think a bit more needs to be done, maybe put it into the Application Support Folder or something?
    Thank you in advance

    Thanx for your reply SeaBeast.
    Erm, ok maybe I'm not being clear.
    Pre iTunes7: iPod's were updated using the iPod updater application located in /Applications/Utilities. This could be downloaded as a standalone app and showed up in software updater when updating of the app was required. Easy.
    iTunes7:iPod updater is now part of iTunes. Updates are downloaded from within iTunes ( iPod model specific it seems ) and sometimes it has to be forced to update, see
    http://www.macosxhints.com/article.php?story=20060912144151766
    Where does it keep these downloaded updates?
    Does it modify the existing "iPod Updater 2006-06-28.app"?
    To my knowledge it is now seperate from this. If it was still seperate i could download it from Apple as a stand-alone but as far as i can see this is no longer the case. Please help. Maybe I'm just being a ******* and missing something simple here.
    Thanx again.

  • How to convert an Excel Formula to a Custom Calculation Script in a Adobe Acrobat 9 Form?

    Hello,
    I am not familiar whatsoever with Javascript and need some help in converting the following Excel Formula so that I can enter it into a Custom Calculation Script in a Adobe PDF Form. Here is the formula:
    =IF(E15<25.01,9.95,IF(E15<50.01,11.95,IF(E15<75.01,13.95,IF(E15<100.01,16.95,IF(E15<150.01 ,19.95,IF(E15<200.01,24.95,IF(E15>200.00,E15*0.125)))))))
    Where "E15" will be the text field named "Subtotal" on my Adobe PDF Form.
    Thank you for any help you can provide!

    Fortunately JavaScript has the 'switch' statement so nested if statements can be avoided.
    var E15 = this.getField("Subtotal").value;
    switch(true) {
    case (E15 < 25.01) :
    event.value = 9.95;
    break;
    case (E15 < 50.01) :
    event.value = 11.95;
    break;
    case (E15 < 75.01) :
    event.value = 13.95;13
    break;
    case (E15 < 100.01) :
    event.value = 16.95;
    break;
    case (E15 < 150.01) :
    event.value = 19.95;
    break;
    case (E15 < 200.01) :
    event.value = 24.95;
    break;
    case (E15 > 200) :
    event.value = E15 * 0.125;
    break;
    default:
    event.value = "";
    break;
    } // end switch;

  • Is it possible to use extensive formulas (e.g. "if" or vlookup functions) in the "Custom Calculation Script"?

    I am working on a form fill PDF converted from MS excel. This is for others to use who don't have MS excel that need to use my spreadsheet.
    1. I would like to know how complex can the formulas be in the custom calculation script in the calculate tab under properties in a cell menu?
    2. Where can I find what formulas will work in the custom calculation script along with the format for those formulas to work correctly (tutorials would help)?
    I have tried writing an "if" function but received and error so I am assuming either functions don't work in the script or there is a different format than standard spreadsheet formats.
    Bruce

    In that case the for loop would be:
        for (var i = 0; i < 8; i += 1) {
            sum += +getField("Total." + i).value;
    So initially, the counter i is equal to zero, so the field name used with the getField method is:
    "Total." + 0, which results in the string "Total.0". With each iteration, the variable i is incremented by 1, so the subsequent field names are the following:
    "Total.1"
    "Total.2"
    "Total.3"
    "Total.4"
    "Total.5"
    "Total.6"
    "Total.7"
    The script gets the value of each field, converts it to a number, and adds the number it to the running sum.

  • How do I create an "if" function in a custom calculation script?

    I need to take a simple "value is the sum of" and make it so if one field is less than 1 then the result of the formula will equal "0".
    For example here is a simple "sum of" script:
    Incent Bns.26, Time Bns.26, Spec Bns.26.
    Now converted to a custom calculation script:
    event.value = ((this.getField("Time Bns.26").value) + (this.getField("Incent Bns.26").value)) + (this.getField("Spec Bns.26").value);
    Where Time Bns is calculated by looking at another field Hours26 using a special formula to calculate the bonus.
    I would like to add something like an "if" function to the script so that if the Hours26 field is less than 1 then the output of the script will equal "0".
    I tried this already:
    var rank = this.getField("Hours26").value
    var value = 0
    if (rank < 1) {
      value = 0
    else  (rank > 0) {
       value = ((this.getField("Time Bns.26").value) + (this.getField("Incent Bns.26").value)) + (this.getField("Spec Bns.26").value);
    event.value = value
    But get the error: SyntaxError : missing ; before statement 7 at line 8:
    Thanks ahead of time for any help.
    Bruce

    Try this:
    var rank = this.getField("Hours26").value;
    var value = 0;
    if (rank < 1) {
      value = 0;
    } else {
       value = ((this.getField("Time Bns.26").value) + (this.getField("Incent Bns.26").value)) + (this.getField("Spec Bns.26").value);
    event.value = value;

  • Custom Calculation Script - Multiplication IF

    Hey Adobe peeps, need help here. I'm not a programmer by any stretch of the imagination, but I am resourceful, BUT I have yet to find a concrete answer for this, nor can I get any of my test formula's to work.
    I have a fillable PDF that is used in a field service environment where employees track their time. I want them to be able to input the data in i.e. hours*rate and it automatically populate the price/cost. Now this is very easy to do with the built in product function, but the problem here is that they have multiple fields to fill out. See below.....
    So basically the "Extended Price" field depends on what they enter into either the "Days", "ST Hours", "Rate, "OT Hours" or "Rate" fields.
    The calculation should be based on 2 of the 5 fields being filled out. For example, here are the 3 possible scenarios:
    Scenario 1: SP Extended Price1=SP Days1*SP ST Rate1
    Scenario 2: SP Extended Price1=SP ST Hours1*SP ST Rate1
    Scenario 3: SP Extended Price1=SP OT Hours1*SP OT Rate1
    They won't ever fill out any more than 2 of the fields so it needs to be an 'if' type of function. I've spent hours on this already, like I said, I'm not a programmer.
    Please help.

    If they really won't be filling in more than one of those sets of fields, the custom calculation script could be:
    (function () {
        // Get the field values, as strings
        var s1 = getField("SP Days1").valueAsString;
        var s2 = getField("SP ST Rate1").valueAsString;
        if (s1 && s2) {
            event.value = +s1 * +s2;
            return;
        var s3 = getField("SP ST Hours1").valueAsString;
        if (s2 && s3) {
            event.value = +s3 * +s2;
            return;
        var s4 = getField("SP OT Hours1").valueAsString;
        var s5 = getField("SP OT Rate1").valueAsString;
        if (s4 && s5) {
            event.value = +s4 * +s5;
            return;
        // If none of these apply, set the field to blank
        event.value = "";

Maybe you are looking for

  • When adding security with 9.0 Pro Text in Document disappears!

    I need to add no print/no edit security to a PDF.  When I do this, the text of the entire document disappears after I save it.  Why is this happening?  Even when I close and open the document again, it opens as essentially a blank document. When I re

  • Data Load Rules file - Conditional load

    Hi, I need to create a data load rules file to load sales data. The data comes at product, entity, month, year, version, scenario, account level. I need to load data only towards two of the entities, NCC and NCCCBU, i.e if the product is coming under

  • [SOLVED]/tmp fills up when building packages

    When I try to install Red Eclipse with: yaourt redeclipse I get a BUNCH of write failed errors then: redeclipse/bin/reserver_freebsd_64: Write failed redeclipse/bin/reclient_freebsd_32: Write failed redeclipse/bin/reserver_linux_32: Write failed rede

  • Nvidia 7300gt and motion 3

    hello, i was curious if anyone else has the 7300gt card and uses it with motion 3. how does it work when you start delving into the 3d stuff? i just started using it the other day - but i haven't done anything complex. i'm still learning the program,

  • Function returning more than one row in type

    SQL> create or replace package types 2 as 3 type cursorType is ref cursor; 4 end; 5 / Package created. SQL> create or replace function sp_ListEmp return types.cursortype 2 as 3 l_cursor types.cursorType; 4 begin 5 open l_cursor for select rowid from