Calling a function in sql prompt
hi
i have created one function in pl/sql
lik following
create or replace function ff(a number) return number is
x number;
begin
select ann_pct_rate into x from naap30_appproducts where applicant_id = a;
return x;
end;
while i called this in sql prompt i got an error like this
SQL> select ff(200610000493001) from dual;
select ff(200610000493001) from dual
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
is it possible to do like this how?
please advice
thanks in advance
sivasankar
Hi Radha,
i am very sorry, mistake is min i have wrongly specified the datatype. thanks for remind me. now it is ok
i have corrected the table like this
create or replace function ff(a number) return varchar2 is
x varchar2(50);
begin
select ann_pct_rate into x from appproducts where applicant_id = a;
return x;
end;
out put is
select ff(200610000493001) from dual;
FF(200610000493001)
18.5000%
thanks
sivasankar
Similar Messages
-
Calling a function from SQL prompt that returns a record
Hi,
I've been trying to execute a function that is present on a different database. for eg. I am loged on to a database say 'A' and trying to execute a function present in database 'B'. this function is present in a package 'X' which has 2 functions and two procedures. From the packages i am able to execute the two procedures and one of the function.
So i guess it is not a problem with the access permissions. The function that i am trying to call say function I has got 3 OUT
parameters and 1 IN parameter. the Function returns a record. When i try to execute this function i get an error. Can you please let me know as to how exactly i need to call this function from the SQL prompt...
thanx in advance
nullHi Anand,
As your function has 3 OUT parameters and it returns a record you can not just call it from SQL Plus. You need to write small PL/SQL program and use variables to hold the OUT values and the returned record.
Good Luck,
RajKiran
null -
Call C function in SQL statement
dear all
I want to know how i can call C function in SQL statement where clausehttp://asktom.oracle.com/pls/ask/f?p=4950:8:80100593788949622::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:934029542973
-
How to use function inPL/SQL prompt?
How can i use function?
In PL/SQL prompt.
suppose, only by typing this,
functionname(parameter);
And it will return answer in PL/SQL prompt.
Is there any syntax or solution to this not in using it in another block of code and calling this function?
Regards ---
MamunHow can i use function?
In PL/SQL prompt.
suppose, only by typing this,
functionname(parameter);
And it will return answer in PL/SQL prompt.
Is there any syntax or solution to this not in using
it in another block of code and calling this
function?You could do us all a favour and just stick to a single thread for the same question rather than starting a new one and causing confusion...
Re: problem in creating function and it is too much urgent!! -
Problem in Calling a function in sql statement.
hi,
I am having a function ops_safex_utl.EDIT_ASSC_CNTR_LOG(id number);
when i am trying to use this inside a sql statement as shown below, it is giving error (exception part inside the function).
SQL> select ops_safex_utl.EDIT_ASSC_CNTR_LOG(688) from dual;
OPS_SAFEX_UTL.EDIT_ASSC_CNTR_LOG(688)
-1 (-- exception )
when i am trying to call this function using a PL/SQL Block then it is woking fine as shown below.
SQL> DECLARE
2
3 x NUMBER(2);
4
5 BEGIN
6
7 x := ops_safex_utl.EDIT_ASSC_CNTR_LOG(688);
8
9 dbms_output.put_line('x '||' '||x);
10
11 END;
12 /
hi
insert into ops_assc_cntr_log
insert into ops_ac_ex_gratia_log
insert into ops_ac_sls_dlvry_slab_dtls_log
insert into ops_ac_sls_dlvry_slab_dtls_log
insert into ops_ac_sls_dlvry_slab_dtls_log
insert into ops_ac_sls_dlvry_slab_dtls_log
insert into ops_ac_sls_dlvry_slab_dtls_log
insert into ops_ac_spl_acct_dtls_log
insert into ops_ac_spl_acct_slab_dtls_log
insert into ops_ac_spl_acct_slab_dtls_log
insert into ops_ac_spl_acct_slab_dtls_log
insert into ops_ac_spl_acct_dtls_log
insert into ops_ac_spl_acct_slab_dtls_log
insert into ops_ac_spl_acct_slab_dtls_log
insert into ops_ac_spl_acct_slab_dtls_log
update ops_assc_cntr
success
x 0
PL/SQL procedure successfully completed.
when i am trying to run the SQL statement it is returning a exception from the function.
SELECT ops_safex_utl.EDIT_ASSC_CNTR_LOG(688) from dual --it is returning -1 (i.e exception).
My sql client version is 9.2.0.1.0. and my data base version is 10.2.0.2.0.
Please advice.Could you post the exception handler within the function.
It sounds like you return -1 if you experience an error - it would be easier to determine the cause of the problem if you return the Oracle error details, E.g:
EXCEPTION
WHEN OTHERS THEN
RETURN dbms_utility.format_error_backtrace;This will then return a meaningful error, identifying exactly what is causing the error to be generated. -
Hi all, i have the following function..........
create or replace function proj_budget_importance
(p_budget in NUMBER)
RETURN VARCHAR2
IS proj_importance NUMBER (8,2);
BEGIN
IF p_budget > 250000 THEN
proj_importance := 'High';
ELSIF p_budget <250000 THEN
proj_importance := 'Normal';
END IF;
RETURN proj_importance;
END;
but i dont know how to call it in the sql query :-(
SELECT proj_id,
proj_name,
proj_budget,
proj_ou_id,
proj_budget_importance???????????
FROM project;
can someone show me please TA!!Your function is invalid:
proj_importance NUMBER (8,2);
BEGIN
IF p_budget > 250000 THEN
proj_importance := 'High';
ELSIF p_budget <250000 THEN
proj_importance := 'Normal';
END IF;
RETURN proj_importance;
END;
and never run :).
create or replace function proj_budget_importance
(p_budget in NUMBER)
RETURN VARCHAR2
IS proj_importance Varchar2(32);
BEGIN
IF p_budget > 250000 THEN
proj_importance := 'High';
ELSIF p_budget <250000 THEN
proj_importance := 'Normal';
END IF;
RETURN proj_importance;
END;
select proj_budget_importance(100000) from dual;
'Normal' -
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?
nullJohn,
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 -
Calling the function from SQL query
Hi,
I am trying to run the below statement,
Select to_number(apps.pay_balance_pkg.get_value( 326, :paa.assignment_action_id,to_date ('31032011','ddmmyyyy'))) from dual;
getting an error as :
ORA-14552 cannot perform a DDL, commit or rollback inside a query or DML
ORA - 06512 at apps.pay_balance_pkg , line 4526.
How can I execute this funciton "apps.pay_balance_pkg.get_value" from sql query?
Thanks in advance.user1175432 wrote:
Hi,
I am trying to run the below statement,
Select to_number(apps.pay_balance_pkg.get_value( 326, :paa.assignment_action_id,to_date ('31032011','ddmmyyyy'))) from dual;
getting an error as :
ORA-14552 cannot perform a DDL, commit or rollback inside a query or DML
ORA - 06512 at apps.pay_balance_pkg , line 4526.
How can I execute this funciton "apps.pay_balance_pkg.get_value" from sql query?
Thanks in advance.If the function is performing DDL, commit or rollback inside it then you will not be able to call it from an SQL statement.
Either change the function so it doesn't perform DDL, commit or rollback, or use a different means to obtain the information you want (assuming you can't change the function) -
Can call a function from SQL COMMAND but can't from the SHUTTLE help please
I've read this article
ARTICLE
I've written the code in a function called SURVEY_USERS that takes one variable
when I run the following in the SQL builder:
SELECT SURVEY_USERS('canns') from DUAL;I get
SELECT smteam.division_manager DS, smteam.division_manager RV from SMTEAM where smteam.division_manager=canns and rownum = 1
UNION
SELECT SMTEAM.dept_manager DS, smteam.dept_manager RV from SMTEAM LEFT where smteam.division_manager=canns
UNION
SELECT smteam.wdmanagername DS, smteam.wdmanagername RV from SMTEAM where smteam.division_manager=cannswhich is what I want but when I put in into the "list of values definition".
RETURN SCREPORTS.SURVEY_USERS('canns');I get
Error ORA-06550: line 1, column 188: PL/SQL: ORA-00904: "CANNS": invalid identifier ORA-00904: "CANNS": invalid identifier ORA-06550: line 1, column 7: PL/SQL: SQL Statement ignored ORA-00904: "CANNS": invalid identifierI'm just confused as to what I'm doing wrong. I'm passing the same thing to the function...and it appears to be working in the SQL workshop and not the actual LOV Shuttle.
Edited by: bostonmacosx on Sep 12, 2012 3:45 PMHere is some of the function
create or replace function "SURVEY_USERS"
(app_user in VARCHAR2)
return VARCHAR2
is
vp_exists INTEGER;
ed_exists INTEGER;
dr_exists INTEGER;
mngr_exists INTEGER;
begin
SELECT COUNT(*) into vp_exists
FROM smteam
WHERE area_manager= app_user
AND ROWNUM = 1;
SELECT COUNT(*) INTO ed_exists
FROM smteam
WHERE division_manager = app_user
AND ROWNUM = 1;
SELECT COUNT(*) INTO dr_exists
FROM smteam
WHERE dept_manager = app_user
AND ROWNUM = 1;
SELECT COUNT(*) INTO mngr_exists
FROM smteam
WHERE wdmanagername = app_user
AND ROWNUM = 1;
--dbms_output.put_line (vp_exists);
--dbms_output.put_line (ed_exists);
--dbms_output.put_line (dr_exists);
--dbms_output.put_line (mngr_exists);
IF (vp_exists = 1) THEN
RETURN 'SELECT smteam.area_manager DS,smteam.area_manager RV from SMTEAM where smteam.area_manager='''||app_user||''' and ROWNUM = 1
UNION
SELECT smteam.division_manager DS, smteam.division_manager RV from SMTEAM where smteam.area_manager='''||app_user||'''
UNION
SELECT smteam.dept_manager DS, smteam.dept_manager RV from SMTEAM where smteam.area_manager='''||app_user||'''
UNION
SELECT smteam.wdmanagername DS, smteam.wdmanagername RV from SMTEAM where smteam.area_manager='''||app_user||'''';
END IF;
IF (ed_exists = 1 and vp_exists=0) THEN
RETURN 'SELECT smteam.division_manager DS, smteam.division_manager RV from SMTEAM where smteam.division_manager='''||app_user||''' and rownum = 1
UNION
SELECT SMTEAM.dept_manager DS, smteam.dept_manager RV from SMTEAM LEFT where smteam.division_manager='''||app_user||'''
UNION
SELECT smteam.wdmanagername DS, smteam.wdmanagername RV from SMTEAM where smteam.division_manager='''||app_user||'''';
END IF;
IF (dr_exists = 1 and ed_exists=0 and vp_exists=0) THEN
RETURN 'SELECT smteam.dept_manager DS, smteam.dept_manager RV from SMTEAM where smteam.dept_manager=:'''||app_user||'''and rownum = 1
UNION
SELECT smteam.wdmanagername DS, smteam.wdmanagername RV from SMTEAM where smteam.dept_manager='''||app_user||'''';
END IF;
IF (mngr_exists = 1 and ed_exists=0 and vp_exists=0 and dr_exists=0) THEN
RETURN 'SELECT smteam.wdmanagername DS, smteam.wdmanagername RV from SMTEAM where smteam.wdmanagername=:'''||app_user||''' and rownum = 1';
END IF;
END;
Edited by: bostonmacosx on Sep 12, 2012 3:56 PM -
Call external function from SQL query
Hi,
I am new to PL/SQL programming.I don't think this is possible but please let me know if there is a way to achieve this. I have a function written in VB.net and I would want to call from the query.
create table temp as select id, callvbfunction(note_text) from temp2
Here callvbfunction is the vb.net function.I need to pass note_text field value to the function.
Thanks..Yes it is possible.
No idea how to specifically call a .Net function (from Oracle) as I do not do Windows (except for playing games ;-) ). But external procedures (extproc) and Java stored procs can be wrapped by PL/SQL wrapper functions and used in SQL statements. -
Calling a function from SQL that has Out Parameters
Hello folks,
I am not sure if this is do-able, but here is my scenrio at hand. I have a database function that accepts a few IN parameters and OUT parameters. I want one of the Out parameters to display as part of my select statement. Is this possible?
ThanksNo you cannot use a function with out parameters in sql statements.
If possible make the function return that value, then use it in select.( imean instead of OUT parameter, get that OUT parameter through RETURN)
G. -
Call userdefined function on sql server 2000 from a rpt/crystalviewer CR11
Post Author: schste0
CA Forum: Data Connectivity and SQL
Hi, i have userdefined functions in an sql2k database and look for a way to use them in cr11 and in the reportviewer with RAS. Thx in advance.Use a SQL Expression if the Driver supports it. Or a Command Object.
-
Calling Function in SQL Server through DBLINK
Hello
I need to call a function that exists in other database (*SQL Server*) through DBLINK
Is It possible? If yes, please give me the syntax
ThanksHi,
You can call remote functions on SQL*Server if you create the database link using the Database Gateway for SQL*Server (DG4MSQL).
You need to install and configure DG4MSQL then you can call remote functions as follows -
SELECT function1@Remote_DB(7782) FROM dual;
You need to set the parameter -
HS_CALL_NAME
in the DG4MSQL init<sid>.ora file with the owner and name of the function, for example -
HS_CALL_NAME = "owner1.function1, owner2.function2 "
and if you want to return values using the function you need to set the parameter in the gateway init file -
HS_FDS_PROC_IS_FUNC=TRUE
For full details you need to refer to the documentation -
Oracle® Database Gateway for SQL Server User’s Guide, 11g Release 2 (11.2)
Oracle® Database Heterogeneous Connectivity User’s Guide 11g Release 2 (11.2)
which is available from -
http://www.oracle.com/pls/db112/homepage
and click on the 'Integration Information' option on the left.
The documentation has further details on how to call and use remote functions.
For information about installing and configuring the gateway and links to further information have a look at the following note -
Note.1083703.1 Master Note for Oracle Gateway Products
available in My Oracle Support
You cannot use the Database Gateway for ODBC (DG4ODBC) to create the database link as it does not supported stored procedures or remote functions.
Regards,
Mike
Edited by: mkirtley on Sep 2, 2011 11:09 AM -
Hi,
I wrote a function like below:
create or replace function test_ref_cur
return sys_refcursor is
l_ref_cur sys_refcursor;
begin
open l_ref_cur for
select 'Tom' ename from dual
union
select 'John' from dual
union
select 'Jim' from dual;
return l_ref_cur;
end;
When I call this function in Sql: Select test_ref_cur from dual; it returns 1 row as below
Test_REF_CURSOR
(CURSOR)
I can see the data only when I double click on (CURSOR).
Is there a way to show the data directly in the result window: like
Ename
Jim
Tim
John
Thanks,
DDdd_ram wrote:
Hi,
I wrote a function like below:
create or replace function test_ref_cur
return sys_refcursor is
l_ref_cur sys_refcursor;
begin
open l_ref_cur for
select 'Tom' ename from dual
union
select 'John' from dual
union
select 'Jim' from dual;
return l_ref_cur;
end;
When I call this function in Sql: Select test_ref_cur from dual; it returns 1 row as below
Test_REF_CURSOR
(CURSOR)
I can see the data only when I double click on (CURSOR).
Is there a way to show the data directly in the result window: likeYou need to understand what a ref cursor is.
The reason your result is showing "(CURSOR)" (I assume you're using SQL Developer or TOAD) is that the returned result is a cursor, not a set of data. Only when you double click on it, will it actually use that cursor to fetch the data back.
For more understanding, read the following article...
PL/SQL 101 : Understanding Ref Cursors -
Calling user function from Interface mapping
I am getting error "Bad query:ORA-00904: invalid identifier" while calling function in the mapping of an interface.
Can some one provide the syntax of calling user function from interface mapping.
Thanks,
RPuser452108 wrote:
Can some one provide the syntax of calling user function from interface mapping.Oracle's Call Iinterface, the OCI, does not work differently when coding using a Dvorak keyboard, or writing code using a pretty pink font in the editor.. or coding the call from an interface mapping (whatever the hell that that is).
You have 2 types of calls. SQL and PL/SQL.
To call a function via SQL, it can be done using a the standard cursor interface. E.g.
select MyFunkyFunction from dualIt will return the function value via a single row with a single column. The standard cursor fetch and close cursor calls are used.
To call it via PL/SQL, an anonymous PL/SQL block is needed, and the caller needs to use a bind variable to receive the value from the function. The anon block will look as follows:
begin
:bindVar := MyFunkyFunction;
end;Refer to your client's abstract layer for interfacing with the Oracle Call Interface, on how to deal with bind variables.
Maybe you are looking for
-
Error testing Web Dynpro Callable Object (GP Interface)
With reference to thread: Interactive form as Callable object error on testing the object. FYI, I'm running NW04s, EP 7.0 SPS 13, JDK 1.4.2_14, Unix OS Hi All, I have created a Web Dynpro App with a Adobe Form as the frontend. I have included the ca
-
Error in Reading Standard.joboptions
Adobe PDF-Einstellungen: Fehler beim Lesen der Datei in : C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Adobe\Adobe PDF\Settings\Standard.joboptions System: Windows Server 2003 / Acrobat Standard 9.52 (versions before had the same problem)
-
ITunes says i need 64bit version to sync, I already have it
iTunes gives me the following error when I plug in my iPhone: "This iPhone cannot be used because the required software is not installed. Run the iTunes installer to remove iTunes, then install the 64-bit version of iTunes." I'm running vista 64-bit
-
Touch: Wont turn off: Need to recover due to "Firmware Probl
Hi all. I have a 40gb Touch that just got the Firmware Problem screen. So, I start looking around here and see about recovery steps, but can't get the player to turn off. Try holding down the power button, nothing. The player turns off while the pape
-
Where is the link for submitting problem to apple?
Where is apple link for submitting problems?