XMLTABLE function not returning any values if xml has attribute "xmlns"
Hi,
XMLTABLE function not returning any values if xml has attribute "xmlns". Is there way to get the values if xml has attribute as "xmlns".
create table xmltest (id number(2), xml xmltype);
insert into xmltest values(1,
'<?xml version="1.0"?>
<emps>
<emp empno="1" deptno="10" ename="John" salary="21000"/>
<emp empno="2" deptno="10" ename="Jack" salary="310000"/>
<emp empno="3" deptno="20" ename="Jill" salary="100001"/>
</emps>');
insert into xmltest values(2,
'<?xml version="1.0"?>
<emps xmlns="http://emp.com">
<emp empno="1" deptno="10" ename="John" salary="21000"/>
<emp empno="2" deptno="10" ename="Jack" salary="310000"/>
<emp empno="3" deptno="20" ename="Jill" salary="100001"/>
</emps>');
commit;
SELECT a.*
FROM xmltest,
XMLTABLE (
'for $i in /emps/emp
return $i'
PASSING xml
COLUMNS empno NUMBER (2) PATH '@empno',
deptno NUMBER (3) PATH '@deptno',
ename VARCHAR2 (10) PATH '@ename',
salary NUMBER (10) PATH '@salary') a
WHERE id = 1;
The above query returning results but below query is not returning any results because of xmlns attribute.
SELECT a.*
FROM xmltest,
XMLTABLE (
'for $i in /emps/emp
return $i'
PASSING xml
COLUMNS empno NUMBER (2) PATH '@empno',
deptno NUMBER (3) PATH '@deptno',
ename VARCHAR2 (10) PATH '@ename',
salary NUMBER (10) PATH '@salary') a
WHERE id = 1;
how to get rid out of this problem.
Thanks,
-Mani
Added below one in xmltable, its working now.
XmlNamespaces(DEFAULT 'http://emp.com')
Similar Messages
-
Standar ws ProjectByPartyQueryResponse_In is not returning any values
Hi gurus,
I'm trying to use the standar webservice ProjectByPartyQueryResponse_In in our landscape in order to get all the projects related to the person responsible for the project but the web service is not returning any values.
When I execute the service -using soapui- with the following values (or any other value for that matters):
<PartyID>20000143</PartyID>
<PartyRoleCode>ZA</PartyRoleCode>
The web service always returns :
<Log>
<BusinessDocumentProcessingResultCode>5</BusinessDocumentProcessingResultCode>
<MaximumLogItemSeverityCode>3</MaximumLogItemSeverityCode>
<Item>
<TypeID>002(ECC_SE_COMMON)</TypeID>
<SeverityCode>3</SeverityCode>
<Note>No records returned for ZA 0020000143</Note>
</Item>
</Log>
The party Id exists and also de party role code and there is at least one project that has that party with that role. I'm sure because I use other web service to find a project by id and in the result the project has the <Party> section with those values.
I was looking for solutions, notes, threads in forums with no success, then i decided to debug the webservice and I did find the following line in the webservice code.
SELECT objnr INTO TABLE it_data FROM ihpa
WHERE parvw = role_code AND
parnr = party_id AND
obtyp = 'PDN'.
when that line executes the select always returns 0 values, then I look in the table IHPA using the SE16 without any filter and I found that my records exists!! but the select does not get it. I was wondering why the select is not working and then I filter the data in the SE16 using the same values that the query does
for example:
PARVW= ZA
PARNR = 20000143
OBTYP = PDN
And I was surprised when the SE16 did not found any value even I was seeing in the previous screen with no filters!!!! And I supouse thats why the webservice is not working. I started making filters one by one, for example firts filtering just de PARVW = ZA and works, but when I filter just the PARNR = 20000143 the SE16 can't find any value, just when I put an * at the end of the number the SE16 returns all the values expected, Im guessing that the fields in the database has blanks at the end but this is a standar table and a standar program.
Have any of you had the same problem? is there anything that I can do? does anyone knows if this is an unkown bug? becaus I could'n find any note on the marketplace.
Any help would be appreciated.
Gustavo BalboaHi!
The problem were solved but not using the Badi, because the badi only let you change the value of the var party_id and that var is declared as PARNR (of type numeric with length 10), and no mater wat you do the two 00 can´t be removed.
We solved the problem with an enhancement point in the code at the method "party_get_data", look at the beginin and at the end. We just change the type of var used for party_id.. now we use a CHAR one insted the numeric used by the original code.
And we repeat the select...
Thank you very much for the help.
METHOD party_get_data.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$SE:(1) Class CL_PRS_PROJECTPRJPARTYQR, Method PARTY_GET_DATA, Start A
$$-Start: (1)----
$$
ENHANCEMENT 1 ZPARTY_GET_DATA. "active version
DATA : WA_PARNR TYPE I_PARNR.
DATA : WA_CHPAR(10) TYPE C.
ENDENHANCEMENT.
$$-End: (1)----
$$
DATA : temp_object_number TYPE ihpa-objnr,
field1 TYPE char50,
field2 TYPE char50,
field_role TYPE char50,
field_party TYPE char50,
st_object_number TYPE TABLE OF bapiprexp.
DATA : it_data TYPE TABLE OF st_data,
wa_data LIKE LINE OF it_data,
itab TYPE TABLE OF st_data,
wa LIKE LINE OF itab,
wa_project_details LIKE LINE OF project_details,
null.
Select Object number based on input Party and Role
SELECT objnr INTO TABLE it_data FROM ihpa
WHERE parvw = role_code AND
parnr = party_id AND
obtyp = 'PDN'.
Select Project ID based on input Object number
LOOP AT it_data INTO wa_data.
SELECT pspid post1 FROM proj INTO CORRESPONDING FIELDS OF wa_data
WHERE objnr = wa_data-pspid. "#EC CI_NOFIELD
ENDSELECT.
MOVE-CORRESPONDING wa_data TO wa.
APPEND wa TO itab.
ENDLOOP.
IF sy-subrc <> 0.
field_role = cl_wd_utilities=>get_otr_text_by_alias( 'PLM-SE_PRS_XI_PROXY/ROLE_CODE' ) .
field_party = cl_wd_utilities=>get_otr_text_by_alias( 'PLM-SE_PRS_XI_PROXY/PARTY_ID' ) .
CONCATENATE field_role role_code_external INTO field1.
CONCATENATE field_party party_id INTO field2.
MESSAGE e002(ecc_se_common) WITH field1 field2 INTO null.
CALL FUNCTION 'PS_BAPI_MESSAGE_APPEND'
TABLES
return = party_return.
ELSE.
MESSAGE s082(ops_se_prs) INTO null.
CALL FUNCTION 'PS_BAPI_MESSAGE_APPEND'
TABLES
return = party_return.
ENDIF.
LOOP AT itab INTO wa.
MOVE-CORRESPONDING wa TO wa_project_details.
APPEND wa_project_details TO project_details.
ENDLOOP.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$SE:(2) Class CL_PRS_PROJECTPRJPARTYQR, Method PARTY_GET_DATA, End A
$$-Start: (2)----
$$
ENHANCEMENT 2 ZPARTY_GET_DATA. "active version
WA_CHPAR = party_id.
SHIFT WA_CHPAR BY 2 PLACES.
CLEAR party_return.
REFRESH party_return.
SELECT objnr INTO TABLE it_data FROM ihpa
WHERE parvw = role_code AND
parnr = WA_CHPAR AND
obtyp = 'PDN'.
Select Project ID based on input Object number
LOOP AT it_data INTO wa_data.
SELECT pspid post1 FROM proj INTO CORRESPONDING FIELDS OF wa_data
WHERE objnr = wa_data-pspid. "#EC CI_NOFIELD
ENDSELECT.
MOVE-CORRESPONDING wa_data TO wa.
APPEND wa TO itab.
ENDLOOP.
IF sy-subrc <> 0.
field_role = cl_wd_utilities=>get_otr_text_by_alias( 'PLM-SE_PRS_XI_PROXY/ROLE_CODE' ) .
field_party = cl_wd_utilities=>get_otr_text_by_alias( 'PLM-SE_PRS_XI_PROXY/PARTY_ID' ) .
CONCATENATE field_role role_code_external INTO field1.
CONCATENATE field_party party_id INTO field2.
MESSAGE e002(ecc_se_common) WITH field1 field2 INTO null.
CALL FUNCTION 'PS_BAPI_MESSAGE_APPEND'
TABLES
return = party_return.
ELSE.
MESSAGE s082(ops_se_prs) INTO null.
CALL FUNCTION 'PS_BAPI_MESSAGE_APPEND'
TABLES
return = party_return.
ENDIF.
LOOP AT itab INTO wa.
MOVE-CORRESPONDING wa TO wa_project_details.
APPEND wa_project_details TO project_details.
ENDLOOP.
ENDENHANCEMENT.
$$-End: (2)----
$$
ENDMETHOD. -
IE/ExternalInterface do not return any value if movie added with appendChild
There is a problem with IE/ExternalInterface if movie is added to DOM f.ex appendChild. JavaScript functions are called but they do not return any value.
MS first response was that this is 3rd party/Adobe problem.
Fixing this with innerHTML is not the solution. Using here Any suggestions ?
Simplified test case has
var flashMovie = '<OBJECT id="testId" codeBase="http://fpdownload..
// Works in IE and FF
document.getElementById("testdiv").innerHTML = flashMovie;
// ExternalInterface.call calls JS but does not return value in IE. Works in FF
var tempDiv = document.createElement("div");
tempDiv.innerHTML = flashMovie;
document.body.appendChild(tempDiv);
Here is complete code
http://pastebin.com/fbc0aa9a
Here is AS3 code in for ajax.swf
http://pastebin.com/d4efd47b
-HYou are right about that duplicate id of the movie in this example, but that is not case here.
I appreciate if you try this and confirm that problem exist or any work-around.
Here is more explanation to original post:
In HTML is JavaScipt
function fromJs()
return "text from js..";
that is called from AS3
var s = ExternalInterface.call("fromJs");
This "s" value and also ExternalInterface.objectID are null in AS3.
Here example again only with non-working case without that duplicate id with innerHTML
http://pastebin.com/f4e33af93
and also movie with AS3 code is attached.
Using plain innerHTML this case works
document.getElementById("testdiv").innerHTML = '<OBJECT..
and with appendChild does not work
var tempDiv = document.createElement("div");
tempDiv.innerHTML = "<OBJECT ..
document.body.appendChild(tempDiv); -
Vendor Search not returning any values in SRM
Hi Gurus
Has any one come accross the following issue? Kindly advice.
SRM 3.0
Search Vendor (F4) not returning any value although Vendor exist in SRM (system allows to raise Cart if Requestioner keys in the Vendor Number manually, ie. Vendor has very much got replicated in SRM)
Steps to replicate the issue
1) Log on to SRM portal
2) Expand the Go Shopping and click on Shop (Extended Form)
3) Click on Create Limit Item
4) Fill in the Description, Select the Product Category, Enter the Value Limit & Expected Value & fill in the required date
5) To search for Supplier, click on the find button
6) In the Find Vendor screen press the start button without entering any restriction
7) System throws a message "No Vendor found"
Kind regards,
Mehul ShahHi Muthu,
Thanks for replying Muthu.
Entries do exists in VENMAP.
No filters are set while searching for Vendor.
In fact, If I find the Vendor code from ERP and key in the vendor number in the Supplier field in SRM, it rightly picks up the vendor from the Vendor code.
The only issue is....while I try to search for Supplier using the Supplier search functionality (by clicking on the binocular), the search functionality does not return any values (I put no restriction).
By the way, Is there any missing Attribute in PPOMA_BBP that may be causing this?
Regards,
Mehul. -
UTL File not return any values in .CSV oracle plsql hrms
Hello experts,
We want to extract employee details from Core hrms with output as .csv file :
i have created below package for utl but not return any values in csv file pls help me on this.:::
CREATE OR REPLACE PACKAGE BODY APPS."XXPER_PAYROLL_XIR_PKG"
AS
procedure payroll_main (
in_from_date IN date,
in_to_date IN date,
p_errbuf OUT VARCHAR2,
p_retcode OUT NUMBER
) is
cursor c_person is
SELECT distinct ppf.person_id
FROM per_person_types ppt,
pay_payrolls_f pp,
per_person_type_usages_f pptu,
per_all_people_f ppf,
per_all_assignments_f ppa
WHERE ppf.person_id = pptu.person_id
AND pptu.person_type_id = ppt.person_type_id
AND ppt.user_person_type in ('Employee', 'Ex-employee' ,'Intern')
AND ppf.person_id = ppa.person_id
AND ppa.assignment_type = 'E'
AND ppa.primary_flag = 'Y'
AND ppa.payroll_id = pp.payroll_id
-- and nvl(ppa.ass_attribute10, 'N') = 'Y' -- this is in Production
AND pp.payroll_name = 'Calendar Payroll'
AND trunc( ppf.last_update_date) between in_from_date and in_to_date
AND trunc( ppa.last_update_date) between in_from_date and in_to_date
AND trunc( ppt.last_update_date) between in_from_date and in_to_date
AND trunc( pptu.last_update_date) between in_from_date and in_to_date
AND trunc(sysdate) between ppf.effective_start_date and ppf.effective_end_date
AND trunc(sysdate) between ppa.effective_start_date and ppa.effective_end_date
AND trunc(sysdate) between ppf.effective_start_date and ppf.effective_end_date
AND trunc(sysdate) between pptu.effective_start_date and pptu.effective_end_date
AND ppf.employee_number <> 'NONE';
v_person_id number;
v_dom_eff_dt date;
io_err_flag varchar2(1);
io_err_desc varchar2(2000);
io_record_update boolean;
BEGIN
dbms_output.put_line('in_from_date-' || in_from_date);
dbms_output.put_line('in_to_date-' || in_to_date );
open c_person;
loop
fetch c_person into v_person_id;
exit when c_person%NOTFOUND;
get_person_information( v_person_id ,
in_from_date ,
in_to_date ,
io_err_flag ,
io_err_desc );
dbms_output.put_line('Per_id-' || v_person_id || ': ' || 'Payroll_main' || sqlcode || sqlerrm );
end loop;
close c_person;
end payroll_main;
PROCEDURE get_person_information(in_person_id IN number,
in_from_date IN date,
in_to_date IN date,
io_err_flag IN OUT varchar2,
io_err_desc IN OUT varchar2) is
--v_service_date DATE;
v_data_file UTL_FILE.FILE_TYPE;
v_record VARCHAR2(1000);
v_header VARCHAR2(1000);
v_record_mail VARCHAR2(1000);
v_file_name VARCHAR2(100);
v_file_name_mail VARCHAR2(100);
v_ser_name VARCHAR2(50);
v_dir VARCHAR2(100) :='XX_XIR_HR_PAY';
v_con_req_id NUMBER;
v_user_id NUMBER;
v_resp_id NUMBER;
v_resp_appl_id NUMBER;
p_request_id NUMBER;
P_status VARCHAR2(100);
cursor c1 is
SELECT ppf.person_id per_id,
ppf.employee_number emp_num,
ppf.first_name f_name,
ppf.last_name l_name,
ppf.national_identifier nat_id,
ppf.date_of_birth dat_birth,
ppf.sex sex_g,
-- TO_DATE(ppf.attribute1,'DD-MON-YYYY') att_date,
ppt.user_person_type per_type,
ppf.email_address email_id,
ppf.last_update_date last_upd_date
FROM per_person_type_usages_f pptu,
per_person_types ppt,
per_people_f ppf
WHERE ppf.person_id = in_person_id
AND ppf.person_id = pptu.person_id
AND pptu.person_type_id = ppt.person_type_id
and trunc(ppf.last_update_date) between in_from_date and in_to_date
and trunc( pptu.last_update_date) between in_from_date and in_to_date
AND trunc( ppt.last_update_date) between in_from_date and in_to_date
AND trunc(sysdate) between ppf.effective_start_date and ppf.effective_end_date
AND trunc(sysdate) between pptu.effective_start_date and pptu.effective_end_date
AND ppt.user_person_type in ('Employee', 'Ex-employee' ,'Intern')
and ppt.system_person_type in ('EX_EMP', 'EMP') ;
cursor c2 is
SELECT substr(pa.address_line1, 1, 60) address_line1,
substr(pa.address_line2, 1, 60) address_line2,
pa.town_or_city city,
pa.region_2,
pa.postal_code,
pa.region_1,
pa.country,
pa.date_from,
nvl(pa.date_to, to_date('12/31/4712', 'mm/dd/yyyy')),
pa.creation_date,
pa.last_update_date
FROM per_addresses pa
WHERE pa.person_id = in_person_id
AND pa.last_update_date between in_from_date and in_to_date
AND trunc(sysdate) between date_from and nvl(date_to, to_date('12/31/4712', 'mm/dd/yyyy'))
AND pa.primary_flag = 'Y';
cursor c3 is
SELECT pp.phone_number pnum
FROM per_phones pp
WHERE pp.parent_id = in_person_id
AND pp.last_update_date between in_from_date and in_to_date
AND trunc(sysdate) between date_from and nvl(date_to, to_date('12/31/4712', 'mm/dd/yyyy'))
AND phone_type = 'H1';
cursor c4 is
SELECT ppos.period_of_service_id,
ppos.date_start start_date,
ppos.adjusted_svc_date,
ppos.actual_termination_date,
TO_DATE(ppos.attribute1,'yyyy/mm/dd hh24:mi:ss') last_day
FROM per_periods_of_service ppos
WHERE ppos.person_id = in_person_id
AND ppos.last_update_date between in_from_date and in_to_date
AND ppos.date_start = ( select max(date_start)
from per_periods_of_service
where person_id = in_person_id
and trunc(date_start) <= trunc(sysdate) );
Begin
dbms_output.put_line('Directory:'||v_dir);
BEGIN
v_header := 'Employee Number'||CHR(9)
||'Fore Name'||CHR(9)
||'Sur Name'||CHR(9)
||'PPS'||CHR(9)
||'Date of birth'||CHR(9)
||'Gender'||CHR(9)
||'Person Type'||CHR(9)
||'Email Address'||CHR(9)
||'Last Update Date'||CHR(9)
||'Address1'||CHR(9)
||'Address2'||CHR(9)
||'Phone_Number'||CHR(9)
||'Start Date'||CHR(9)
||'Last Day';
v_file_name :='XIR_DATA.xls';
dbms_output.put_line('Excel_file_name:'||v_file_name);
v_data_file :=UTL_FILE.FOPEN(v_dir,v_file_name, 'W');
UTL_FILE.PUT_LINE(v_data_file,v_header);
FOR i IN c1 LOOP
FOR j IN c2 LOOP
FOR k IN c3 LOOP
FOR m IN c4 LOOP
dbms_output.put_line(' excel file loop ');
v_record:=i.emp_num||CHR(9)
||i.f_name||CHR(9)
||i.l_name||CHR(9)
||i.nat_id||CHR(9)
||i.dat_birth||CHR(9)
||i.sex_g||CHR(9)
||i.per_type||CHR(9)
||i.email_id||CHR(9)
||i.last_upd_date||CHR(9)
|| j.address_line1||CHR(9)
||j.address_line2||CHR(9)
||k.pnum||CHR(9)
||m.start_date||CHR(9)
||m.last_day;
UTL_FILE.PUT_LINE(v_data_file,v_record);
END LOOP;
END LOOP;
END LOOP;
END LOOP;
UTL_FILE.FCLOSE(v_data_file);
dbms_output.put_line(' close excel file');
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('unable to create data excel file in proc1'||SUBSTR(SQLERRM,1,25));
END;
end get_person_information;
END xxper_payroll_xir_pkg;
EE Number Forename Surname Dept effective Start Date_dept Start Date Leave Date effective Start Date_leave_Dt Date of Birth Address1
Thanks
Edited by: 981527 on Feb 12, 2013 5:59 AM
Edited by: 981527 on Feb 12, 2013 6:05 AMDid you make sure that the queries are returning values in the first place? From the last few lines, it looks like you have the header written to the file. Is that correct?
-Karthik -
Table-Valued Function not returning any results
ALTER FUNCTION [dbo].[fGetVendorInfo]
@VendorAddr char(30),
@RemitAddr char(100),
@PmntAddr char(100)
RETURNS
@VendorInfo TABLE
vengroup char(25),
vendnum char(9),
remit char(10),
payment char(10)
AS
BEGIN
insert into @VendorInfo (vengroup,vendnum)
select ks183, ks178
from hsi.keysetdata115
where ks184 like ltrim(@VendorAddr) + '%'
update @VendorInfo
set remit = r.remit
from
@VendorInfo ven
INNER JOIN
(Select ksd.ks188 as remit, ksd.ks183 as vengroup, ksd.ks178 as vendnum
from hsi.keysetdata117 ksd
inner join @VendorInfo ven
on ven.vengroup = ksd.ks183 and ven.vendnum = ksd.ks178
where ksd.ks192 like ltrim(@RemitAddr) + '%'
and ks189 = 'R') r
on ven.vengroup = r.vengroup and ven.vendnum = r.vendnum
update @VendorInfo
set payment = p.payment
from
@VendorInfo ven
INNER JOIN
(Select ksd.ks188 as payment, ksd.ks183 as vengroup, ksd.ks178 as vendnum
from hsi.keysetdata117 ksd
inner join @VendorInfo ven
on ven.vengroup = ksd.ks183 and ven.vendnum = ksd.ks178
where ksd.ks192 like ltrim(@PmntAddr) + '%'
and ks189 = 'P') p
on ven.vengroup = p.vengroup and ven.vendnum = p.vendnum
RETURN
END
GO
Hi all,
I'm having an issue where my Table-Valued Function is not returning any results.
When I break it out into a select statement (creating a table, and replacing the passed in parameters with the actual values) it works fine, but with passing in the same exact values (copy and pasted them) it just retuns an empty table.
The odd thing is I could have SWORN this worked on Friday, but not 100% sure.
The attached code is my function.
Here is how I'm calling it:
SELECT * from dbo.fGetVendorInfo('AUDIO DIGEST', '123 SESAME ST', 'TOP OF OAK MOUNTAIN')
I tried removing the "+ '%'" and passing it in, but it doesn't work.
Like I said if I break it out and run it as T-SQL, it works just fine.
Any assistance would be appreciated.Why did you use a proprietary user function instead of a VIEW? I know the answer is that your mindset does not use sets. You want procedural code. In fact, I see you use an “f-” prefix to mimic the old FORTRAN II convention for in-line functions!
Did you know that the old Sybase UPDATE.. FROM.. syntax does not work? It gives the wrong answers! Google it.
Your data element names make no sense. What is “KSD.ks188”?? Well, it is a “payment_<something>”, “KSD.ks183” is “vendor_group” and “KSD.ks178” is “vendor_nbr” in your magical world where names mean different things from table to table!
An SQL programmer might have a VIEW with the information, something like:
CREATE VIEW Vendor_Addresses
AS
SELECT vendor_group, vendor_nbr, vendor_addr, remit_addr, pmnt_addr
FROM ..
WHERE ..;
--CELKO-- Books in Celko Series for Morgan-Kaufmann Publishing: Analytics and OLAP in SQL / Data and Databases: Concepts in Practice Data / Measurements and Standards in SQL SQL for Smarties / SQL Programming Style / SQL Puzzles and Answers / Thinking
in Sets / Trees and Hierarchies in SQL -
Function Does Not Return any value .
Hi ,
I am wrtting the below funtion without using any cursor to return any message if the value enters by parameters
does not match with the value reterived by the function select statement or it does not reterive any value that
for the parameters entered .
E.g:
CREATE OR REPLACE FUNCTION TEST_DNAME
(p_empno IN NUMBER,p_deptno IN NUMBER)
RETURN VARCHAR2
IS
v_dname varchar2(50);
v_empno varchar2(50);
V_err varchar2(100);
v_cnt NUMBER := 0;
BEGIN
SELECT d.dname,e.empno
INTO v_dname ,v_empno
FROM scott.emp e , scott.dept d
WHERE e.empno=p_empno
AND d.deptno=p_deptno;
--RETURN v_dname;
IF p_empno IS NOT NULL AND p_deptno IS NOT NULL
THEN IF v_dname is NULL THEN
v_err :='Not Valid';
RETURN v_err;END IF;
ELSIF p_empno IS NOT NULL AND p_deptno IS NOT NULL
THEN IF v_dname is NOT NULL THEN
RETURN v_dname; END IF;
ELSE
RETURN v_dname;
END IF;
END;
Sql Statement
SELECT TEST_DNAME(1234,30) FROM dual
AND IF I enter a valid combination of parameter then I get the below error :
e.g:
SQL> SELECT TEST_DNAME(7369,20) FROM dual
2 .
SQL> /
SELECT TEST_DNAME(7369,20) FROM dual
ERROR at line 1:
ORA-06503: PL/SQL: Function returned without value
ORA-06512: at "SCOTT.TEST_DNAME", line 24
Where I am missing .
Thanks,Format you code properly and look at it:
CREATE OR REPLACE
FUNCTION TEST_DNAME(
p_empno IN NUMBER,
p_deptno IN NUMBER
RETURN VARCHAR2
IS
v_dname varchar2(50);
v_empno varchar2(50);
V_err varchar2(100);
v_cnt NUMBER := 0;
BEGIN
SELECT d.dname,
e.empno
INTO v_dname,
v_empno
FROM scott.emp e,
scott.dept d
WHERE e.deptno=d.deptno
AND e.empno=p_empno
AND d.deptno=p_deptno;
--RETURN v_dname;
IF p_empno IS NOT NULL AND p_deptno IS NOT NULL
THEN
IF v_dname is NULL
THEN
v_err :='Not Valid';
RETURN v_err;
END IF;
ELSIF p_empno IS NOT NULL AND p_deptno IS NOT NULL
THEN
IF v_dname is NOT NULL
THEN
RETURN v_dname;
END IF;
ELSE
RETURN v_dname;
END IF;
END;
/Both p_empno and p_deptno in
SELECT TEST_DNAME(7369,20) FROM dualare not null. So SELECT will fetch some v_dname and v_empno. Since p_empno and p_deptno iare not null your code will go inside outer IF stmt and will execute its THEN branch. That branch consist of nothing but inner IF statement. And since v_dname is NOT NULL it will bypass that inner IF and exit the outer IF. And there is no RETURN stmt after that outer IF. As a result you get what you get - ORA-06503. Also, both if and elsif in your code check same set of conditions which makes no sense.
SY. -
Function not returning right value
I have this following function, based on the return value from this function, I am inserting a row into the GROUP_MAP table.
This function is returning a value greater than zero even though constrains would not let it select any rows.
It looks as if it is not applying the "AND STRING_CODE = String_Code" constraint to the result set. If there are two records matching the groupOID I passed it is returning two as the count(*). I checked by executing the query directly and I got 0 as the result. I sounds so strange. Is there any thing I am doing wrong ?
Thanks in Advance,
-Bhasker
FUNCTION FIND_CODE_GROUP (groupOID IN NUMBER, String_Code IN VARCHAR2)
RETURN NUMBER
AS
RETURN_VAL NUMBER(10);
BEGIN
RETURN_VAL := 0;
SELECT
COUNT(*)
INTO
RETURN_VAL
FROM
GROUP_MAP
WHERE
STRING_GROUP = groupOID AND STRING_CODE = String_Code;
DBMS_OUTPUT.PUT_LINE('RETURN_VAL:'|| RETURN_VAL || ' String code : ' || STRING_CODE);
RETURN(RETURN_VAL);
EXCEPTION
WHEN OTHERS THEN
RETURN(0);
END FIND_CODE_GROUP;FUNCTION FIND_CODE_GROUP (groupOID IN NUMBER, String_Code IN VARCHAR2)
RETURN NUMBER
AS
RETURN_VAL NUMBER(10);
BEGIN
RETURN_VAL := 0;
SELECT
COUNT(*)
INTO
RETURN_VAL
FROM
GROUP_MAP
WHERE
STRING_GROUP = groupOID AND STRING_CODE = String_Code;The second parameter to your function has the same name as the column name "STRING_CODE" in your table. You should change
the name of your second parameter to something other than "STRING_CODE". -
Function not returning any rows
If I run this code with a standard SQL statement it will return (1) row - which is correct. But when I try to use a function it is not returning any records. Could someone point what I'm doing wrong?
Also, if a use BindByName if get Oracle error: ORA-06550: line 1, column 50: PLS-00103: Encountered the symbol ">". If I comment out BindByName I will not get this error . Thanks!
C# code:
string domainuser = 'brockj';
string ConnectString = ConfigurationSettings.AppSettings["ConnectString"];
OracleConnection dbconn = new OracleConnection(ConnectString);
OracleCommand cmd = new OracleCommand("access_admin",dbconn);
cmd.CommandType = CommandType.StoredProcedure;
//cmd.BindByName = true;
OracleParameter p_username = new OracleParameter();
OracleParameter p_retval = new OracleParameter();
p_username.OracleDbType = OracleDbType.Varchar2;
p_retval.OracleDbType = OracleDbType.Int16;
p_username.Direction = ParameterDirection.Input;
p_retval.Direction = ParameterDirection.ReturnValue;
p_username.Value = domainuser;
cmd.Parameters.Add(p_username);
cmd.Parameters.Add(p_retval);
dbconn.Open();
cmd.ExecuteScalar();
lblResponse.Text = p_retval.Value.ToString(); -- prints '0', should print '3'
********FUNCTION************
Function access_admin
p_username IN varchar2
RETURN number
IS
l_accesscode users.access_admin%TYPE; -- number(1)
cursor c1 IS
SELECT access_admin
FROM users
WHERE username = p_username
AND active=1
AND rownum=1;
BEGIN
open c1;
fetch c1 into l_accesscode;
if c1%NOTFOUND then
l_accesscode := 0;
end if;
close c1;
RETURN l_accesscode;
END access_admin;Turn the function call into a standard SQL statement:
SELECT access_admin FROM dual;
Here's how you use BindByName:
adapter = new OracleDataAdapter();
adapter.SelectCommand = new OracleCommand("SELECT * FROM emp WHERE sal >= :SAL OR empno = :EMPNO", conn);
adapter.SelectCommand.BindByName = true;
adapter.SelectCommand.Parameters.Add(new OracleParameter("EMPNO", OracleDbType.Int32, 0));
adapter.SelectCommand.Parameters["EMPNO"].Value = 7788;
adapter.SelectCommand.Parameters.Add(new OracleParameter("SAL", OracleDbType.Int32, 0));
adapter.SelectCommand.Parameters["SAL"].Value = 2000;
-- Tom -
*Hello Guys.*
*I hv inserted search help in an field of screen exit in T-code IW21. Its showing value properly when i press f4 but when selecting value its nt returning any value properly....*
*I am pasting code ..please help me out*
*. Process of value Request*
*field <fieldname> module F4_AGENCY*
*MODULE F4_AGENCY INPUT.*
*DATA: IT_AGENCY TYPE TABLE OF ZF4_AGENCY WITH HEADER LINE,*
*it_FIELD_TAB type table of DFIES WITH HEADER LINE,*
*IT_DDSHRETVAL TYPE TABLE OF DDSHRETVAL WITH HEADER LINE.*
*REFRESH : IT_AGENCY[].*
*clear : VIQMEL-ZZAGENCY.*
**SELECT * FROM ZF4_AGENCY INTO TABLE IT_AGENCY.**
*CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'*
*EXPORTING*
DDIC_STRUCTURE = 'ZF4_AGENCY'**
*RETFIELD = 'ZZAGENCY'*
PVALKEY = ' '**
*DYNPPROG = sy-cprog "'SAPLXQQM'*
*DYNPNR = sy-dynnr "'0101'*
*DYNPROFIELD = 'VIQMEL-ZZAGENCY'*
STEPL = sy-stepl**
*VALUE_ORG = 'S'*
*TABLES*
*VALUE_TAB = IT_AGENCY[]*
*FIELD_TAB = it_FIELD_TAB[]*
*RETURN_TAB = IT_DDSHRETVAL[]*
DYNPFLD_MAPPING =**
EXCEPTIONS**
PARAMETER_ERROR = 1**
NO_VALUES_FOUND = 2**
OTHERS = 3**
*IF SY-SUBRC <> 0.*
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO**
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.**
*ENDIF.*
*wating for any reply*Did you take a look at the help for FM? pass the hardcoded value for DYNPPROG and DYNNR (and see if that works)
DYNPPROG and DYNNR cannot be passed as SY-REPID and SY-DYNNR because they are only analyzed after the function module has been called. Instead, first copy the SY fields to local variables and then pass them to the function module. -
RFC call do not return any value
Hi All,
I have an RFC written in one R/3 system(call center R/3) and i am calling this RFC in the ERP system.
If i try to run the RFC locally in the call center system ,it runs correctly and returns me proper values.
But when i try to call it from other R/3 system(ERP) the RFC does not return value.(both cases i am passing same parameters).
Also , RFC parameters are defined with pass by value option.
I am not able to trace why this behaviour,can anyone pin point what could be the possible cause of error.
Thanks in advance,
SwatiNo ,there i snot RFC connection problem ,i have checked it from SM59.
Neither do i get any dump or error of no authorization.In fact the sy-subrc after the RFC call is 0.
St22 do not have any trace for the same.
my RCC call is something like this,
IF dest <> ' '.
CALL FUNCTION 'Z_GET_CIC061' DESTINATION dest
EXPORTING
p_comp = itab_cic-company
p_asc_code = itab_cic-customer
p_wbill_no = itab_cic-bill_no
IMPORTING
e_tr_no = tr_no
e_model_code = model_code
e_data_origin = data_origin
EXCEPTIONS
communication_failure = 1
system_failure = 2.
ELSE.
MESSAGE i000 WITH 'RFC Destination is empty!'.
EXIT.
ENDIF.
Can anyone please suggest whats wrong in the above code.
Also what is transaction RFC call?is it related to what i am using in the above code of mine.
Thanks in advance,
Swati -
F4_FILENAME_SERVER is not returning any value
Dear All,
I want a popup for the application server from where I can select file for further processing. I have used F4_FILENAME_SERVER, but the function module is not working. It is giving a popup with the filenames but after selection of a particular file if I select the check button, it is not returning anything (coming blank). Please can you suggest anything on this.
Thanks and regards,
AtanuTry using FM: /SAPDMC/LSM_F4_SERVER_FILE
*** Display Directories on the Application Server
CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
EXPORTING
DIRECTORY = <directory_name>
* filemask = ''
IMPORTING
SERVERFILE = P_FILE
EXCEPTIONS
CANCELLED_BY_USER = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE W016 WITH P_FILE.
ENDIF.
Kind Regards
Eswar -
Why constructor not return any(value) type?
hello,
why constructor does not have a return type
thanksbecause i want to know why they made like that?The question is: why should it not be that way? A constructor is not a method. Why should it behave like one?
The constructor's point is to set the freshly created object to a defined state. Nothing else.
Even if it had a return value: what would you do with it?
class X {
int X() {
return 17;
public static void main(String[] args) {
X instance = new X();
}So tell me how you would store the returned 17. Another assignment in the same statement? Not possible. -
Date function not returning any rows
I am trying to pull back rows for data of people who were born in the 90s
a.birthday >= to_date('01/01/90','dd/mm/yy')
and
a.birthday <= to_date('31/12/90','dd/mm/yy')
I know that there is definately users born in the 90s in my database but it returns 0 rows with the above ouptut Date format is like "05-FEB-93", have tried using dd/mon/yy but that gives an erroruser8652681 wrote:
I am trying to pull back rows for data of people who were born in the 90s
a.birthday >= to_date('01/01/90','dd/mm/yy')
and
a.birthday <= to_date('31/12/90','dd/mm/yy')
I know that there is definately users born in the 90s in my database but it returns 0 rows with the above ouptut Date format is like "05-FEB-93", have tried using dd/mon/yy but that gives an errorFirst off to_date('01/01/90','dd/mm/yy') is Jan 1, 2090. You need to use a four digit year.
Secondly a.birthday >= to_date('01/01/1990','dd/mm/yyyy') and a.birthday <= to_date('31/12/1990','dd/mm/yyyy')
is not everyone born in the 90's, it's everyone born in 1990. If you want everyone born in the 90's you need:
a.birthday between to_date('01/01/1990','dd/mm/yyyy') and to_date('31/12/1999 23:59:59','dd/mm/yyyy hh24:mi:ss')I realize your birthdays are most likely trunc'ed so the time portion probably isn't necessary but I included it just to be safe.
Edited by: kendenny on Jul 22, 2009 6:13 AM -
Hi,
Please help me in the following.I'm desperate...
I'm using PreparedStatement to do multiple queries in the same Table of a Database(ACCESS).
The rows of the Table look i.e like this :
(TABLE NAME == PERSONS)
PERSON_INDEX__TIME_PERIOD_________SPORT
1_______________1________________Basketball
1_______________2________________Football
1_______________3________________Tennis
2_______________1________________Something
I populate my PreparedStatement using something like :
java.sql.PreparedStatement st = con.createPreparedStatement("SELECT SPORT FROM PERSONS WHERE PERSON_INDEX=? AND TIME_PERIOD=?");
Now, when I do something like :
try
st.setInt(1,1);
st.setInt(2,1);
st.addBatch();
}catch(SQLException e){}
st.executeQuery();
ResultSet results = st.getResultSet();
while ( results.next() )
System.out.println("->"+results.getString("SPORT"));
I trully get as output :
->BasketBall
But when I populate it some more :
try
st.setInt(1,1);
st.setInt(2,1);
st.addBatch();
//***Query some more***
st.setInt(1,1);
st.setInt(2,2);
st.addBatch();
}catch(SQLException e){}
... and I execute I DON'T GET :
->BasketBall
->Football
but NOTHING!!! - the ResultSet HAS NO ROWS
This thing is driving me mad.
Can you please help me out?
Please post the code if neccessary...There is something wrong in your understanding of batching the statements. Basically you will add either update or insert or delete statements to your batch.
If you add a select statement, it will throw 'java.sql.BatchUpdateException: invalid batch command'. And moreover 'st.executeBatch()' is the method you need to invoke.
If you don't execute the batch using 'executeBatch()' method then, it must throw the exception,
'java.sql.SQLException: error occurred during batching: batch must be either executed or cleared'.
You need to rework on your code, I believe.
Sudha
Maybe you are looking for
-
Deploying ear file to multiple managed ervers
What are the steps we need to follow to deploy an ear file to multiple managed servers. Is there a separate method for deploying ear file to managed servers. Do we need to setup classpath / StartupClass for the managed servers? Anyone knows this ?
-
File formats include jpeg, Word and Excel documents, and PDFs. Documents have come from downloads, email attachments, and documents created locally. Performed a full scan today which found no results. Performed a system refresh and no improvement. Th
-
Incompleteness Procedure - Navigation to required fields.....
Hello, I noticed that on the portal side as well as the GUI, if you don't fill standard required fields the error message will have a link that will navigate you directly to the field in question to enter values in the given field. I want to impleme
-
Drawing line from thin to thick
I need to draw a line where some segments of the line is thicker than the rest. I can draw the lines, but I need some kind of smooth transition from thin line to thick and the other way around. I'm using generalpath and stroke to draw the lines. What
-
Good morning I'm using leopard calendar server to manage personal and group calendars. Is there a way to manage leopard caledars using outlook 2003? (are there plugins to have to way syncronization?) With thunderbird and lightning 0.8 I can do that!!