Run Functions on sql plus

Dear all,
Can anyone assist me to run my function on sql plus. I have created a function already using sql plus. I would like to execute my function.
Thanks in advance

Please read about [url http://oraclesvca2.oracle.com/docs/cd/B10501_01/server.920/a90842/ch5.htm#1006009]Running PL/SQL Blocks, [url http://oraclesvca2.oracle.com/docs/cd/B10501_01/server.920/a90842/ch6.htm#1007557]Using Bind Variables in the manual.

Similar Messages

  • How to pass table type variable into function from SQL*PLUS ?

    How to pass a table type variable from sql*plus prompt into a function ?
    Thanx in advance.

    Krishna,
    Do you mean like this?SQL> DECLARE
      2      TYPE t_tbl IS TABLE OF VARCHAR2(20);
      3      l_sample_tbl           t_tbl;
      4
      5      FUNCTION print_contents ( p_tbl IN t_tbl )
      6      RETURN VARCHAR2
      7      IS
      8          l_string            VARCHAR2(1000);
      9      BEGIN
    10          FOR i IN 1..p_tbl.COUNT LOOP
    11              IF (i = 1) THEN
    12                  l_string := p_tbl(i);
    13              ELSE
    14                  l_string := l_string || ', ' || p_tbl(i);
    15              END IF;
    16          END LOOP;
    17          RETURN (l_string);
    18      END print_contents;
    19
    20  BEGIN
    21      l_sample_tbl := t_tbl();
    22      l_sample_tbl.EXTEND;
    23      l_sample_tbl(1) := 'one';
    24      l_sample_tbl.EXTEND;
    25      l_sample_tbl(2) := 'two';
    26      l_sample_tbl.EXTEND;
    27      l_sample_tbl(3) := 'three';
    28      l_sample_tbl.EXTEND;
    29      l_sample_tbl(4) := 'four';
    30      l_sample_tbl.EXTEND;
    31      l_sample_tbl(5) := 'five';
    32      DBMS_OUTPUT.PUT_LINE(print_contents(l_sample_tbl));
    33  END;
    34  /
    one, two, three, four, five
    PL/SQL procedure successfully completed.
    SQL> HTH,
    T.

  • How do I test sql function in sql*plus?

    Hi,
    I was given the syntax for a sql function and need to test this in SQL*Plus. What syntax do I use to test this?
    p_UserName IN OUT SMUser.Name%type,p_PW IN OUT SMUser.
    Password%type) RETURN INTEGER IS
    nRet INTEGER :=1;
    nCount NUMBER := 0;
    BEGIN
    select count(*) into nCount from smUser where smUser.Name = p_UserName
    and smUser.Password = p_PW;
    IF (nCount = 1) THEN
    SELECT smUser.Name into p_UserName from smUser where smUser.Name =
    p_UserName and smUser.Password = p_PW;
    SELECT smUser.Password into p_PW from smUser where smUser.Name =
    p_UserName and smUser.Password = p_PW;
    RETURN 0;
    END IF;
    RETURN nRet;
    END paulsoraclefunction;
    Thanks,
    Paul

    This should work. You will need to make sure that the variables are declared as the same data type as in the function. Unfortunately, you cannot use %TYPE in declaring SQL*Plus variables.
    VARIABLE p_username VARCHAR2(30);
    VARIABLE p_pw VARCHAR2(30);
    BEGIN
    :p_username := 'PAUL';
    END;
    SELECT paulsoraclefunction(:p_username,:p_pw) FROM dual;
    SELECT :p_username,:p_pw FROM dual;
    TTFN
    John

  • Calling a function from sql*plus

    I can call my procedure from sql *plus
    by doing
    sql>call Proc_name(x,y);
    How do you call a function?
    null

    John,
    I think moifying the statement
    CREATE OR REPLACE PROCEDURE "OGUSER"."OGX1" (user_county in integer, user_permit in integer )
    TO
    CREATE OR REPLACE FUNCTION "OGUSER"."OGX1" (user_county in integer, user_permit in integer ) return NUMBER is
    AND before end you will have to add a return statement
    (Probably
    return 0;
    exception
    when others then
    return 1;
    end;
    This will change your procedure to a function but I am not sure you'll be able to see your dbms_output's, if you call the function using select ...
    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by john saucer ([email protected]):
    I want to turn my procedure into a function.
    So I can call it with a select statement.
    I'm kind of having problems with the return statement at the top and bottom.
    I don't quite understand how to declare the type in the return. My procedure calculates 2 pl/sql tables....
    My procedure looks like.
    CREATE OR REPLACE PROCEDURE "OGUSER"."OGX1" (user_county in integer, user_permit in integer )
    as
    i integer :=0;
    j integer :=0;
    type dept_table_type is table of ogxtest%rowtype
    index by binary_integer;
    type dept2_table_type is table of ogxtest%rowtype
    index by binary_integer;
    my_dept_table dept_table_type;
    my_dept2_table dept2_table_type;
    v_cotemp number := user_county;
    v_permittemp number := user_permit;
    v_origcotemp number := user_county;
    v_origpermittemp number := user_permit;
    v_count number(2) :=1;
    v_count2 number(2) := 1;
    v_oldcount number(2) :=1;
    v_oldcount2 number(2) := 1;
    begin
    select count(*) into v_count from ogxtest where oco=v_cotemp and opermit=v_permittemp;
    select count(*) into v_oldcount from ogxtest where nco=v_cotemp and npermit=v_permittemp;
    while v_count >= 1 LOOP
    i := i+1;
    v_count2 := v_count2 +1;
    select *
    into my_dept_table(i)
    from ogxtest where oco=v_cotemp and opermit=v_permittemp;
    v_cotemp := my_dept_table(i).nco;
    v_permittemp := my_dept_table(i).npermit;
    select count(*) into v_count from ogxtest where oco=v_cotemp and opermit=v_permittemp;
    end loop;
    while v_oldcount >= 1 LOOP
    j := j+1;
    v_oldcount2 := v_oldcount2 +1;
    select *
    into my_dept2_table(j)
    from ogxtest where nco=v_origcotemp and npermit=v_origpermittemp;
    v_origcotemp := my_dept2_table(j).oco;
    v_origpermittemp := my_dept2_table(j).opermit;
    select count(*) into v_oldcount from ogxtest where nco=v_origcotemp and npermit=v_origpermittemp;
    end loop;
    for i in 1..v_count2-1
    loop
    dbms_output.put_line(' reassigned to - orig county ' | |my_dept_table(i).oco | | ' orig permit ' | |my_dept_table(i).opermit| | ' new county ' | |
    my_dept_table(i).nco | | ' new permit ' | |my_dept_table(i).npermit );
    end loop;
    for j in 1..v_oldcount2-1
    loop
    dbms_output.put_line(' reassigned from - orig county ' | |my_dept2_table(j).oco | | ' orig permit ' | |my_dept2_table(j).opermit| | ' new county ' | |
    my_dept2_table(j).nco | | ' new permit ' | |my_dept2_table(j).npermit );
    end loop;
    end;
    <HR></BLOCKQUOTE>
    null

  • Creating PL/SQL function in SQL plus which will display desired output

    Hello PL/SQL experts,
    I am not skilled on PL/SQL so want you help for one of the PL/SQL requirement.
    Requirement: We have a database purge jobs which deletes the records from our application database on daily basis. Our Client wants a verification PL/SQL to be created which they will run pre and post the purge job to identify the number of records deleted/processed by purge job. It should do a SELECT operation and find out the number of records in table based on the where clause and give the output to the user.
    The result of PL/SQL should be something like this (considering the PL/SQL is processing multiple select statements):
    ****Verification SQL Start*****
    30 records from table S_SRV_REQUEST selected
    45 records from table S_SRV_REQUEST_X selected
    15 records from table S_SRV_REQUEST_XM selected
    *****Verification SQL complete*****
    For this I am thinking of a simple PL/SQL which will diplay the count of records from each table but I am not sure how to display the count on screen as an output. Can I request PL/SQL experts to put some light on this?
    Regards
    Sumit

    PL/SQL is a server side process running on your database server.  It is not connected to a display or a keyboard, so cannot output any results from within the code itself.
    What you need is a client application that the user can run which will query the database, or call procedure(s) to get results and then the client application will display those results appropriately.
    One of the simplest client tools you can use to build such a user-friendly application is Oracle Application Express (APEX).
    Bear in mind that if you're going to 'identify' record for deletion prior to actually deleting them, then you may also have a need to store the keys of those identified records somewhere so that only those records are deleted.  Consider the situation where the user requests the information and the application queries the records to say there are 30 records from S_SRV_REQUEST with the correct criteria to be deleted.  By the time the user confirms they are happy and want the records deleted, some other record(s) may have been updated and also meet the criteria, so just doing a delete based on the criteria itself could result in more than 30 records being deleted.  However if you've identified the records and marked them in some way for deletion or stored the keys of those records on a queue somewhere to indicate the ones to be deleted, then your actual deletion process can just deal with those records and ignore any that have met the criteria since that time.  Of course that depends on your individual requirements, but it's something to bear in mind.

  • Run function from SQL Workshop Command window

    hi, cant get it work, maybe someone will help. i need to test the function running, how to launch it in workshop window?
    currently im thinking of something alike:
    declare a varchar2(62);
    begin
      a:=VAL_MERGE_SQL();
    end;Simon

    hi Geert,
    thanks for the tip, but my function uses DDL statements, so it cant be executed in DML statement like select.
    problem solved: DDL statement inside function must use global keyword (create global...) then it can be executed like this:
    declare
      a varchar2(62);
    begin
      a:=VAL_MERGE_SQL;
    end;greets,
    Simon

  • How to read stored procedure/function in SQL*PLUS?

    I created procedure and stored in Oracle. Now, I want to read it or may be modify it.
    I know "Oracle Enterprise Manager" can make it, but if I don't have it, how can I achieve it?
    I don't want to use "CREATE OR REPLACE PROCEDURE ..." because I need to read it first. How can I do?
    Thanks!!!
    Anne

    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by Anne:
    I created procedure and stored in Oracle. Now, I want to read it or may be modify it.
    I know "Oracle Enterprise Manager" can make it, but if I don't have it, how can I achieve it?
    I don't want to use "CREATE OR REPLACE PROCEDURE ..." because I need to read it first. How can I do?
    Thanks!!!
    Anne<HR></BLOCKQUOTE>
    Anne -
    On SQLPLUS use follwings -
    Set long 50000 ;
    Spool procname.txt
    and then write the SQL query which was given
    in earlier reply.If You u have problem let us know.
    Thanks
    Ajeet
    null

  • How do I modify a user-defined function in SQL Plus

    I have created some functions in my database. Can anybody tell me how to modify/edit those functions?

    PS C:\> $Class2 = New-Object MyTest.Class1
    PS C:\> $Class2
    MyString Struct1Property Struct2Property
    MyTest.Struct1 MyTest.Class1+Struct2
    PS C:\> $Struct2 = New-Object MyTest.Class1+Struct2
    PS C:\> $Struct2.Property = "X"
    PS C:\> $Struct2
    Property
    X
    PS C:\> $Class2.Struct2Property = $Struct2
    PS C:\> $Class2.Struct2Property.Property
    XPS C:\> $Struct2.GetType()
    IsPublic IsSerial Name                                     BaseType                                                                    
    False    False    Struct2                                  System.ValueType                                                            
    Struct2 is a valuetype, (by value)
    The classes are by reference
    PS C:\> $Struct3 = $Class2.Struct2Property
    PS C:\> $Struct3
    Property
    X
    PS C:\> $Struct3.Property = "Y"
    PS C:\> $Class2.Struct2Property.Property
    X
    PS C:\> $Class2.MyString = "A"
    PS C:\> $Class3 = $Class2
    PS C:\> $Class3.MyString = "B"
    PS C:\> $Class2.MyString
    B

  • Exported DDL don't run in SQL Plus

    Greetings,
    I'm using SQL Developer to export the DDL from my DB to a script .sql.
    When I try to run it into SQL Plus I get errors because of the <cr> caracters from the INSERT INTO statements generated.
    Example:
    Insert into CNAE_110_CLASSE (CODIGO_SEC,CODIGO_DIV,CODIGO_GRP,CODIGO_CLA,DESCRICAO_CLA,CCOMPRE_CLA,TCOMPRE_CLA,NCOMPRE_CLA,NOTAS_CLA) values ('D','19','191','19100','CURTIMENTO E OUTRAS PREPARAÇOES DE COURO','# A fabricaçao de couros curtidos, envernizados, metalizados, camurças, atanados, cromos, etc.','# A regeneraçao, tingimento e pintura de couro','# As atividades de secagem e salga de couros e peles desenvolvidas em matadouros (15.11)<cr>
    # A confecçao de vestuário de couro (18.12)',null);
    This returns:
    SP2-0734: unknown command beginning "A confecçao ..." - rest of line ignored.
    I'm using Oracle 10g XE and SQL Developer 1.2.0.29.98 on a Fedora CORE 6 linux.
    Does someone has a clue to solve this? Is it a bug or I forgot to configure something?
    Thanks in advance.

    The label <<outer>> does not work in SQL Developer, neither does labels on loops.Yes, they do.
    I imagine you've got this example in an SQL worksheet. There are a few issues with the worksheet delimiting statements, and apparently this is one of them.
    The workaround here is very simple: encapsulating the lot in another anonymous block. Like this, impossible the <<outer>> falls off...
    Enjoy,
    K.

  • SQL*Plus Change to File While Being Run

    Anyone,
    Once you execute a file run in SQL*Plus does the entire file get cached by SQLPlus? (i.e. @C:\temp\myfile.sql)
    If I change the file C:\temp\myfile.sql while the session is running (long runing script) will it take effect or not?
    I was able to open the file make a change and save but not sure if SQLPlus will pick up my change when it gets to the point in the script where I made the change. Since it was already running.
    Thanks,
    Miller

    That is a very bad idea to begin with.
    If you made a change at the location that has not yet reached by the SQL*Plus script processing, you could see those changes (again depending upon where and how you do them).
    But in most circumstances, the results will be unpredictable (most likely with error messages) since you cannot control what part of the script the SQL*Plus application is currently executing at the moment you decide to make change to the script.
    For example, I started with this script:
    REM --- Script start ---
    prompt "Waiting ..."
    begin
      dbms_lock.sleep(20) ;
    end ;
    begin
      dbms_output.put_line('This is text') ;
    end ;
    prompt "Finished..."
    REM --- Script end ----And run this within SQL*Plus. While the PL/SQL block was waiting on the sleep call, I removed the first line of the script (the one that starts with the prompt statement) and saved it. Below is the output from this run:
    SQL> @test
    "Waiting ..."
    PL/SQL procedure successfully completed.
    SP2-0734: unknown command beginning "ut_line('T..." - rest of line ignored.
    SP2-0042: unknown command "end " - rest of line ignored.
    PL/SQL procedure successfully completed.
    "Finished..."
    SQL>I would not consider this as a successful completion of the script.
    At this point, you are probably playing with probability and taking chances.
    Message was edited by:
    Kamal Kishore

  • Can i run all the SQL And PL/SQL in Oracle SQL Developer?

    hi all
    I have heard that Oracle Sql Developer is a free editor for Oracle DB from Oracle.
    Is it possible to run all the the procedres and functions in that editor
    is there any limitation for that ,can i run all the things that we can run on the SQL Plus
    if anybody knows please let me know
    thanks & regards

    Interesting way of putting it.
    When it comes to SQL and PL/SQL, SQLPlus and SQL Developer do not really 'run' very much.
    Most of the time, these things are just shells that pass the SQL and PL/SQL requests to the appropriate engine (database) which will run the command.
    The challenges are:
    - will the shell interpret the request as something to pass to an engine?
    - will the shell display the response from the engine appropriately?
    For answers to those questions, TongucY provided approriate links.

  • Request: enable use of sql*plus via Oracle Instant Client.

    hi,
    great project....
    I've just installed Raptor release 3 on top of oracle instant client, and it seems to be running fine. my sql*plus from the instant client functions from the command line, but the sql*plus menu item in the tools menu is grayed out.
    review of the help files say's that oracle_home must be set, but instant client does not need an oracle_home. (uses tns_admin instead).
    is there a work around for this? (other than loading the full oracle client w/ it's sql*plus)
    thanks
    GT

    The SQL*Plus menu item does not seem to be correctly detecting the current connection context. I'm filing this as a bug to be fixed before we ship. In the current version, however, you can enable the menu item by ensuring first that the connection is selected in the Connections navigator.
    When the menu is invoked, you will be prompted for the location of the SQL*Plus executable. On Windows, this should just be the path to sqlplus.exe (or sqlplusw.exe). On Unix platforms, you should include 'xterm' or an equivalent in order to ensure that SQL*Plus invokes in a window.
    - John
    Raptor Development Team

  • Select from in SQL Developer fails - SQL*Plus works

    Hello All,
    I've got the HS connection to MySLQ working correctly and most of the requirements I have with respect to the data is working.
    However, i"m only able to test my procedures and functions in SQL*PLus. IN SQL Developer 4.0.0.12 there is always a problem and query results are never displayed.
    Thanks in advance for any advice.
    Sincerely
    JS

    Actually Mike,
    The white spaces are appended to the end of the resulting string. I've included the NLS setting for bother Oracle adn MySQL as well as my odbc.ini file
    select '"'|| "User" ||'"' as Username from "user"@MYODBC5;
    Results (there is white spaces added right after the username, as the result shoudl have been "intm","root" as opposed to "intm                                "
    ===============================================================================================================
    USERNAME
    "intm
    USERNAME
    "root
    NLS _SETTINGS  ORACLE
    ==============================================================
    Oracle:
    ======
    NAME                      
    VALUE$
    NLS_LANGUAGE              
    AMERICAN
    NLS_TERRITORY             
    AMERICA
    NLS_CURRENCY              
    $
    NLS_ISO_CURRENCY          
    AMERICA
    NLS_NUMERIC_CHARACTERS    
    NLS_CHARACTERSET          
    AL32UTF8
    NLS_CALENDAR              
    GREGORIAN
    NLS_DATE_FORMAT           
    DD-MON-RR
    NLS_DATE_LANGUAGE         
    AMERICAN
    NLS_SORT                  
    BINARY
    NLS_TIME_FORMAT           
    HH.MI.SSXFF AM
    NAME                      
    VALUE$
    NLS_TIMESTAMP_FORMAT      
    DD-MON-RR HH.MI.SSXF
    F AM
    NLS_TIME_TZ_FORMAT        
    HH.MI.SSXFF AM TZR
    NLS_TIMESTAMP_TZ_FORMAT   
    DD-MON-RR HH.MI.SSXF
    F AM TZR
    NLS_DUAL_CURRENCY         
    $
    NLS_COMP                  
    BINARY
    NLS_LENGTH_SEMANTICS      
    BYTE
    NLS_NCHAR_CONV_EXCP       
    FALSE
    NAME                      
    VALUE$
    NLS_NCHAR_CHARACTERSET    
    AL16UTF16
    NLS_RDBMS_VERSION         
    11.2.0.2.0
    NLS _SETTINGS  MYSQL
    ==============================================================
    Oracle:
    ======
    NAME :
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | latin1                     |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | latin1                     |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    ===========================================================ODBC INI
    [myodbc5]
    Driver = /usr/lib64/libmyodbc5a.so
    Description = Connector/ODBC 5.3.4 Driver DSN
    SERVER = 127.0.0.1
    PORT = 3306
    USER = intm
    PASSWORD = *********
    DATABASE = mysql
    OPTION = 0
    TRACE = OFF

  • SQL*PLUS and PL/SQL

    HI !
    There is any way to run a command SQL*PLUS through a block pl/sql. For example to run the "copy from" command in a block pl/sql.
    Thanks for you time.

    APC wrote:
    No.
    SQL*Plus is an interactive, client-side tool. PL/SQL is a batch-oriented server side tool.I would make more distinction ...
    SQL*Plus is an interactive, client-side tool - a specialized command processor. PL/SQL is a batch-oriented server side programming language.
    >
    There are ways of doing the same sort of things in both languages, but they are different commands.
    Cheers, APC

  • Create table as in procedure vs SQL*Plus between 2 utf8-db's

    I have a 9.2.05 db with charset UTF8 and Polish characters in it. When I extract a table to another 9.2.05 db with UTF8 charset using create table x as selcect * ...
    When I run it in SQL*Plus everything works just fine but when I do the create table as from inside a procedure the national characters are converted to western characters and the length of the record are shorter. Why? How do I get the procedure to work as SQL*Plus does. /Göran

    This sounds strange. Could you show the code of the procedure? Could you double-check that your db link points to the right database? Could you add:
    SELECT VALUE INTO <variable1>
    FROM NLS_DATABASE_PARAMETERS
    WHERE PARAMETER='NLS_CHARACTERSET'
    SELECT VALUE INTO <variable2>
    FROM NLS_DATABASE_PARAMETERS@<dblink>
    WHERE PARAMETER='NLS_CHARACTERSET'
    to your procedure and output the contents of the PL/SQL <variable1> and <variable2>, e.g. using DBMS_OUTPUT, to verify the character sets of the databases?
    -- Sergiusz

Maybe you are looking for