SIGCHILD on SQLCODE=100
We experience a large delay (180 Milliseconds)for each time our
PRO*COB application executes a FETCH for which there is no data
to satisfy the request. If there is data the response to the
application is within .1 Milliseconds. After the delay the Server
returns SQLCODE=100. We need to eliminate the delay.
Related, we see SQL/Net Break/Reset to be very high and
approximate to the number of occurences of the delay. The
application and the server execute on the same AIX machine.
We have no WHENEVER in the application, but check SQLCODE with an
IF statement.
It appears the server attempts to signal the application ???
Anyone have any experience with this and how to circumvent ?
We experience a large delay (180 Milliseconds)for each time our
PRO*COB application executes a FETCH for which there is no data
to satisfy the request. If there is data the response to the
application is within .1 Milliseconds. After the delay the Server
returns SQLCODE=100. We need to eliminate the delay.
Related, we see SQL/Net Break/Reset to be very high and
approximate to the number of occurences of the delay. The
application and the server execute on the same AIX machine.
We have no WHENEVER in the application, but check SQLCODE with an
IF statement.
It appears the server attempts to signal the application ???
Anyone have any experience with this and how to circumvent ?
Similar Messages
-
SQLCODE = 100 problem. Help please.
Hi all,
I'm getting SQLCODE = 100 returned from a database function following an attempted selection which I know should be returning one row of data.
I've proved this by doing a simple select..
SELECT xml_reference
FROM mydmap
WHERE source_table = 'PERSON' AND
source_field = '<CHANGETYPE>';
XML_REFERENCE
employeeChangeType
1 rows selected I've also written a test function tries to emmulate the erroring function at the point of failure (the erroring function is 1500 lines long so a bit hefty to post here.)
Below is a snippet from the original. The problem occurs at the selection in line 134.
129 -- define change type item string
130 v_cChangeTypeMapping := '<CHANGETYPE>';
131
132 BEGIN
133 -- get employee change type xml reference
134 SELECT xml_reference
135 INTO v_cEmployeeChangeType
136 FROM mydmap
137 WHERE source_table = 'PERSON'
138 AND source_field = v_cChangeTypeMapping;
139 EXCEPTION
140 WHEN OTHERS THEN
141 v_sys_error := SQLCODE;
142 END;
143
144 v_nError := v_sys_error;
145 v_nRowCount := SQL%ROWCOUNT;
146
147 IF v_nError <> 0
148 OR v_nRowCount = 0 THEN
149 BEGIN
150 -- RETURN;
151 RETURN v_sys_error ;
152
153 END;
154 END IF;
...Here is my test function. This performs perfectly.
create or replace
function my_test return varchar2 as
v_returnValue VARCHAR2(500) := '';
v_cChangeTypeMapping VARCHAR2(50);
BEGIN
v_cChangeTypeMapping := '<CHANGETYPE>';
BEGIN
SELECT xml_reference
INTO v_returnvalue
FROM mydmap
WHERE source_table = 'PERSON' AND
source_field = '<CHANGETYPE>';
EXCEPTION
WHEN OTHERS THEN
v_returnValue := SQLCODE;
END;
RETURN v_returnvalue;
END my_test;So now I'm confused :-|
Can anyone shed some light as to what might be going on?
Almost forgot.. I'm using Oracle 10g Express Edition and doing my debugging/coding from within SQL Developer.
Thanks in advance
Phil C.Phil Cole wrote:
I've solved my problem by placing RTRIM around the filter columns in the WHERE clause. Although I fail to see why this should have been a problem given that the data types of the variables and columns were matched. I'm not aware that I've needed to be this particular about trimming data before. But then I am very new to the Oracle environment and trying to pick it up as I go along. Could this be due to a setting on the database that I'm unaware of?
SELECT xml_reference
INTO v_cEmployeeChangeType
FROM mydmap
WHERE RTRIM(source_table) = 'PERSON'
AND RTRIM(source_field) = v_cChangeTypeMapping;
EXCEPTION
WHEN OTHERS THEN
v_sys_error := SQLCODE;
END;Phil.Not a good solution. Even if it is a possible workaround.
By using a function like RTRIM on the column you prevent index access on those columns.
I suggest checking the type declaration of your v_cChangeTypeMapping variable.
Change it according to the test case provided to have the same datatype as the column.
Problem as Keith already explained is probably a different datatype between CHAR and VARCHAR2.
Oracle will do a data type conversion. Depending on what you do in your select this comparison might work in one way or the other.
example
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select '|'||cast('Test' as char(10))||'|' Test_Char,
2 '|'||cast('Test' as Varchar2(10))||'|' Test_Varchar2,
3 case when cast('Test' as char(10)) = cast('Test' as Varchar2(10))
4 then 'identical strings'
5 else 'different strings'
6 end compare_strings
7 from dual;
TEST_CHAR TEST_VARCHAR COMPARE_STRINGS
|Test | |Test| different strings
SQL> As you can see, even if my string is only 'Test' it depends on the datatype whether some blanks are added to it or not. Always avoid implizit type conversions. Try to use the same datatypes for the variables as for the columns.
Edited by: Sven W. on Nov 3, 2008 2:49 PM -
Sqlcode 100 does not come with exception
I have following query
SELECT a.col1 into v_acc_account FROM account_t a
WHERE a.col1=<input paramter> FOR UPDATE OF a.col1 NOWAIT;
The statement returns sqlcode of 100 and does not throw exception
From oracle documentation I understand that the errorcode is accompanied by an exception. What may be the reason behind this behavior.
The return code 100 explains 'DATA NOT FOUND", we have data for the select query.
Data not found means, the select is failing or the locks not available.
any help much appreciated
Regards,
NandishThe code does not make much sense.
What is the actual problem to address - obtain a row lock using several retries with a 2 sec delay between each retry?
I would suggest a modularised approach like the following - with code that is easy to read, understand and maintain:
SQL> create or replace procedure LockEmpForUpdate(
2 empID number,
3 waits integer default 5,
4 waitSecs integer default 2 ) is
5
6 RESOURCE_BUSY exception;
7 pragma exception_init( RESOURCE_BUSY, -54 );
8
9 loopCnt integer;
10 rID rowid;
11 begin
12 loopCnt := 1;
13 while (loopCnt <= waits ) loop
14 begin
15 loopCnt := loopCnt + 1;
16
17 select
18 e.rowid into rID
19 from emp e
20 where e.empno = empID
21 for update
22 nowait;
23
24 exception when RESOURCE_BUSY then
25 if loopCnt <= waits then
26 DBMS_LOCK.Sleep( waitSecs );
27 end if;
28 end;
29 end loop;
30
31 if rID is null then
32 raise_application_error(
33 -20000,
34 'Failed to obtain a row lock on employee '||empID
35 );
36 end if;
37
38 end;
39 /
Procedure created.
SQL>
SQL> --// this employee is locked in another session via an update
SQL> exec LockEmpForUpdate( empID => 7369 )
BEGIN LockEmpForUpdate( empID => 7369 ); END;
ERROR at line 1:
ORA-20000: Failed to obtain a row lock on employee 7369
ORA-06512: at "BILLY.LOCKEMPFORUPDATE", line 32
ORA-06512: at line 1
SQL> --// this employee is not locked
SQL> exec LockEmpForUpdate( empID => 7782 )
PL/SQL procedure successfully completed.
SQL> -
Hi,
Is the PL/SQL sqlcode the same as the ORA-nnnnn code?
My application returns sqlcode on exceptions and I would like to reformat this as ORA- if they are one and the same.
Regards
Dave
(Oracle 9i)
Edited by: user482248 on Mar 12, 2010 3:57 PM
Added db version.Except for NO_DATA_FOUND (error = ORA-01403, SQLCODE = 100). SQLERRM(100) returns 'ORA-01403: no data found'.
-
Problem with upgrade due to no connection to audit database
Hello everyone!
Today after work I wanted to finally upgrade ZCM but run into some problems.
We have three servers: Two primary servers and one database-server (OEM Sybase SQL Anywhere). All three are running on SLES 11.
I want to upgrade our ZCM11.2.4MU1 to ZCM11.3a and then to 11.3.1.
I started by upgrading the Sybase database and running dbunload according to the documentation.
Then I continued with "sh install.sh -c" and chose "Audit Database". I selected the OEM Sybase SQL Anywhere with port 2639.
Admin, password and database-name were unique. But I made the mistake to set the servername to the same as the zenworks-database. *sigh*
The installation completed.
The sybase-asa and sybase-audit-asa services couldn't run at the same time, therefore I rebooted the database-server and installed the audit database again with a unique database-name.
Before the upgrade I could start dbisql and connect without problems to backup the database. Now I cannot connect anymore without using the additional parameter: links=tcpip{host=IPorDNSName,port=2638}
Connecting to the Audit Database via dbisql is not possible, with the following message:
Code:
Could not connect to the database.
Database server not found
Ensure that the name in the "Server name" field is spelled correctly, that the network options on the network tab are correct and that the database server has been started.
[Sybase][ODBC Driver][SQL Anywhere]Database server not found
SQLCODE=-100
SQLSTATE=08001
Connection parameters:
User=zenauditadmin
Password=***
Server=zenworks_audit_database_server
DBN=zenworks_audit_database2
LINKS=ShMem
ENC=NONE
links=tcpip{host=<ip>,port=2639}
With that said, it is not possible to upgrade the first primary server because the setup routine is also not possible to connect to the Audit Server:
Code:
We were unable to create a connection to the database. Please check your
connection information.
Specify the existing ZENworks database and database authentication information
for an existing user with sufficient permissions.
The services sybase-asa and sybase-audit-asa are both running. I also restarted them a couple of times.
zenworks_database.conf and zenworks_database_audit.conf look fine.
Do you have any idea what I missed?
Is the duplicate servername still somewhere existend and prevents the proper running?
Thank you very much in advance for pointing me in any direction!novellchuck wrote:
>
> Hello everyone!
>
> Today after work I wanted to finally upgrade ZCM but run into some
> problems.
>
> We have three servers: Two primary servers and one database-server
> (OEM Sybase SQL Anywhere). All three are running on SLES 11.
> I want to upgrade our ZCM11.2.4MU1 to ZCM11.3a and then to 11.3.1.
>
> I started by upgrading the Sybase database and running dbunload
> according to the documentation.
> Then I continued with "sh install.sh -c" and chose "Audit Database". I
> selected the OEM Sybase SQL Anywhere with port 2639.
>
> Admin, password and database-name were unique. But I made the mistake
> to set the servername to the same as the zenworks-database. sigh
> The installation completed.
> The sybase-asa and sybase-audit-asa services couldn't run at the same
> time, therefore I rebooted the database-server and installed the audit
> database again with a unique database-name.
>
> Before the upgrade I could start dbisql and connect without problems
> to backup the database. Now I cannot connect anymore without using the
> additional parameter: links=tcpip{host=IPorDNSName,port=2638}
>
> Connecting to the Audit Database via dbisql is not possible, with the
> following message:
>
>
> Code:
> --------------------
> Could not connect to the database.
> Database server not found
>
> Ensure that the name in the "Server name" field is spelled
> correctly, that the network options on the network tab are correct
> and that the database server has been started. [Sybase][ODBC
> Driver][SQL Anywhere]Database server not found SQLCODE=-100
> SQLSTATE=08001
> Connection parameters:
> User=zenauditadmin
> Password=***
> Server=zenworks_audit_database_server
> DBN=zenworks_audit_database2
> LINKS=ShMem
> ENC=NONE
> links=tcpip{host=<ip>,port=2639}
> --------------------
>
>
> With that said, it is not possible to upgrade the first primary server
> because the setup routine is also not possible to connect to the Audit
> Server:
>
>
> Code:
> --------------------
> We were unable to create a connection to the database. Please
> check your connection information.
>
>
> ************************************************** ********************
> ******** Specify the existing ZENworks database and database
> authentication information for an existing user with sufficient
> permissions. --------------------
>
>
> The services sybase-asa and sybase-audit-asa are both running. I also
> restarted them a couple of times.
> zenworks_database.conf and zenworks_database_audit.conf look fine.
>
> Do you have any idea what I missed?
> Is the duplicate servername still somewhere existend and prevents the
> proper running?
>
> Thank you very much in advance for pointing me in any direction!
Oh boy... and no backup?
Not sure how to get the sybase back working again... my first choice in
such a case would be to make a contact to Novell, are you able to
create an SR on this?
Niels
I have always liked... Cowabunga!
If you find this post helpful, please show your appreciation by
clicking on the star below.
A member must be logged in before s/he can assign reputation points. -
How to call stored procedure with parameters?
I created a stored procedure in db like:
CREATE PROCEDURE dbo.MySP
@name varchar(50),
@access_date datetime
AS
BEGIN
--insert data into a table
End
Then I create pb function to call this sp like( I use pb 11.5)
datetime ll_date
ll_date =datetime(today(), now())
DECLARE mytest PROCEDURE FOR MySP @objname = :is_name, @access_date = :ll_date USING is_tran;
IF is_tran.SQLCode <> 0 THEN
MessageBox ( "Error", "DECLARE failed" )
RETURN
END IF
EXECUTE mytest;
IF ( is_tran.SQLCode <> 0 ) and ( is_tran.SQLCode <> 100 ) THEN
MessageBox ( "Error", "EXECUTE failed" )
RETURN
END IF
Then I run the app, first time to call this function without any error, but no data inserted, no thing happen.
keep in the app and call the function again, give me error declare error.
debug give me SQLCode = 100.
SP is fine, I can insert data with isql like:
exec MySP 'name', '2014-06-18'
How to figure out the problem and fix it?You didn't mention the database in question, but the first thing I would recommend is making the call via and RPCFUNC declaration on a user object to type transaction rather than embedded SQL. Embedded SQL (IMHO) should be a last resort.
See: Using Transaction Objects to call Stored Procedures -
Environment: Oracle 10gR2 on Windows Server 2008 (64-bit)
I have created this Function:
-- ===========================================================================
-- Function: f_delete_gl_account
-- Author: Carol Burrows, dbcSMARTsoftware Inc.
-- Translation: Murray Sobol, dbcSMARTsoftware Inc.
-- Purpose: This is a database Function which deletes a
-- GL_Account_Nbr from all tables.
-- Last Modified: Thursday May 27, 2010
-- Parameter(s): ac_gl_account_nbr varchar2(75) (GL_Acct_Nbr)
-- Return Code(s): SUCCESS 1
-- ERROR -1 -> Cannot get GL_Acct_Nbr
-- -225 -> Cannot delete s1_gl_account_posting records
-- -226 -> Cannot delete s1_gl_account records
-- -99 -> Abnormal termination
-- ===========================================================================
CREATE or replace FUNCTION f_delete_gl_account
(ac_gl_account_nbr IN varchar)
RETURN NUMBER
IS
lc_gl_account_nbr varchar2(75);
c number;
rows_deleted number;
BEGIN
IF (ac_gl_account_nbr IS NULL) THEN
RETURN (-1);
END IF;
lc_gl_account_nbr := ac_gl_account_nbr;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'DELETE FROM br_gl_account WHERE gl_acct_nbr = ' || lc_gl_account_nbr, DBMS_SQL.NATIVE);
rows_deleted := DBMS_SQL.EXECUTE(c);
dbms_output.put_line('The total number of rows deleted are ' || rows_deleted);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('SQLCODE= ' || SQLCODE);
dbms_output.put_line('SQLERRM= ' || SQLERRM);
dbms_output.put_line('No rows deleted');
RETURN(-2);
END;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'UPDATE fin_allocation SET allocate_gl_acct_nbr = NULL WHERE allocate_gl_acct_nbr = ' || lc_gl_account_nbr, DBMS_SQL.NATIVE);
rows_deleted := DBMS_SQL.EXECUTE(c);
dbms_output.put_line('The total number of rows updated are ' || rows_deleted);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('No rows deleted');
RETURN(-3);
END;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c,'UPDATE fin_allocation ' ||
'SET contra_gl_acct_nbr = NULL ' ||
'WHERE contra_gl_acct_nbr = lc_gl_account_nbr', DBMS_SQL.NATIVE);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('No rows updated');
RETURN(-4);
END;
-- ============================================================
-- All Child data has been deleted, now Delete data from
-- s1_gl_account_posting and s1_gl_account tables
-- ============================================================
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'UPDATE s1_gl_account_posting SET gl_acct_nbr = NULL WHERE gl_acct_nbr = lc_gl_account_nbr', DBMS_SQL.NATIVE);
rows_deleted := DBMS_SQL.EXECUTE(c);
dbms_output.put_line('The total number of rows deleted are ' || rows_deleted);
EXCEPTION
WHEN OTHERS THEN
RETURN(-225);
END;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'DELETE FROM s1_gl_account WHERE gl_acct_nbr = lc_gl_account_nbr', DBMS_SQL.NATIVE);
rows_deleted := DBMS_SQL.EXECUTE(c);
dbms_output.put_line('The total number of rows deleted are ' || rows_deleted);
EXCEPTION
WHEN OTHERS THEN
RETURN(-226);
END;
-- ============================================================
-- Process finished with SUCCESS
-- ============================================================
RETURN(1);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('SQLCODE= ' || SQLCODE);
dbms_output.put_line('SQLERRM= ' || SQLERRM);
RETURN(-999);
END;
which compiles OK.
When I test it using this SQL:
set serveroutput on
select f_delete_gl_account('1120000-4000-9999') from dual;
I get this error:
F_DELETE_GL_ACCOUNT('1120000-4000-9999')
-2
1 row selected.
SQLCODE= -14551
SQLERRM= ORA-14551: cannot perform a DML operation inside a query
No rows deleted
I am trying to avoid using dynamic SQL; instead I am using DBMS_SQL.OPEN_CURSOR and DBMS_SQL.PARSE
Any assistance would be appreciated.Murray Sobol wrote:
I removed the last one.
BTW, the purpose of those statements was to show the Oracle error message and text if the Function should fail.
With those lines removed, I have now lost that capability.
I compiled it and tested it as before, the error is now:
F_DELETE_GL_ACCOUNT('1120000-4000-9999')
-999
1 row selected.Not at all true if you removed ALL the "exception when others".
Please go through the examples below, in the first set i use your "exception catching" method. Notice how you have NO IDEA which line number causes the exception.
Then in the second set, i run things the way they should be run, which do you find more informative?
FIRST (bad) SET
TUBBY_TUBBZ?exec :x := 0;
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
begin
2
if :x = 0
then
raise no_data_found;
end if;
if :x = 1
then
raise too_many_rows;
end if;
exception
when others then
dbms_output.put_line('SQLCODE= ' || SQLCODE);
dbms_output.put_line('SQLERRM= ' || SQLERRM);
end;
SQLCODE= 100
SQLERRM= ORA-01403: no data found
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.15
TUBBY_TUBBZ?TUBBY_TUBBZ? exec :x := 1;
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
begin
2
if :x = 0
then
raise no_data_found;
end if;
if :x = 1
then
raise too_many_rows;
end if;
exception
when others then
dbms_output.put_line('SQLCODE= ' || SQLCODE);
dbms_output.put_line('SQLERRM= ' || SQLERRM);
end;
SQLCODE= -1422
SQLERRM= ORA-01422: exact fetch returns more than requested number of rows
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00SECOND (gooder) set
TUBBY_TUBBZ?TUBBY_TUBBZ? exec :x := 0;
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
begin
2
if :x = 0
then
raise no_data_found;
end if;
if :x = 1
then
raise too_many_rows;
end if;
end;
begin
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at line 5
Elapsed: 00:00:00.01
TUBBY_TUBBZ?TUBBY_TUBBZ? exec :x := 1;
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
begin
2
if :x = 0
then
raise no_data_found;
end if;
if :x = 1
then
raise too_many_rows;
end if;
end;
begin
ERROR at line 1:
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at line 10
Elapsed: 00:00:00.01
TUBBY_TUBBZ?TUBBY_TUBBZ? Please keep in mind this is trivial for tiny blocks like i'm demonstrating with, but imagine a procedure making many nested procedure calls, each procedure being 100's of lines long. -
R11:RECEIVED ERROR MESSAGES FOR AP INVOICE APPROVAL IN ORACLE WORKFLOW
Hi All,
We have this error:
### Detailed Problem Statement ###
Received the following error messages in sysadmin notifications:
Event Error Name: 100
Event Error Message: ORA-01403: no data found
Event Error Stack: HZ_DQM_SYNC>REALTIME_SYNCH(oracle.apps.ar.hz.DQM.realtimesync,
30665979B704AE043C0A81404B04A)
Event Error Name: WFE_DISPATCH_RULE_ERR
Event Error Message: [WFE_DISPATCH_RULE_ERR] ENAME=oracle.apps.ap.payment EKEY=10001
RULE=ap_payment_event_wf_pfg.rule_function SQLCODE=100 SQLERRM=ORA-01403: no
data found
Event Error Stack: WF_Event.dispatch_internal()
In addition, during the set-up of Oracle Approvals Management, there was no available list of
values in the Notification Style in the workflow configurator page.
Action Plan
=======
1) Confirm if the workflow is customized in any way.
2) Confirm whether you are able to select global preferences for the other invoices approval, meaning are you
getting the list of values for the other invoices.
There are no workflow customizations. We are trying to implement it to AP invoice
approval only.
Can you instruct me on how to test this one? I thought I could only select the global preferences from the workflow configuration window. And there are no distinction as to which invoice approval
process it is applicable. Where could I select the global preferences for other
invoices approval?
Thanks a lotthanks hussein , but still we can not see LOV values even if we inserted data manually...:(
But it has improved and we moved on to another error which is:
*****received the error message:3120: Activity 'APINV/52822' has no performer
### Problem description or inquiry details ###
Received the following error message:
Error Message
3120: Activity 'APINV/52822' has no performer.
Error Stack
Wf_Engine_Util.Notification_Send(APINV, 115191_1, 52822, APINV:APINV_MRA) Wf_Engine_Util.Notification(APINV, 115191_1, 52822, RUN)
Encountered the following:
No list of values in the notification style field in the global configuration region in the Workflow Configuration Page
Please note that we could not update the workflow configuration page using the forms because there
is no list of values to select in the above-mentioned field. We just recently
changed the workflow administrator role from SYSADMIN to KCAALIM to reduce
changing of user log-in. We have previously used the sysadmin user log-in to
access the workflow configuration page. there was still no list of values for
the notification style. we changed the wf admin role to kcaalim using the sql:
udpate wf_resources set text = 'KCAALIM' where name like 'WF_ADMIN_ROLE';
Commit;
Hence, changing of wf admin role and user log-in (to sysadmin) won't help (just in case you would advise me to do so) since we tried it
already.
### Responsibility and navigational paths to reproduce ###
1. set-up the AME for ap invoice approval.
2. test an actual transaction.
3. when the list is generated, set-up workflow for AP approval.
when setting up the configuration page, there is no list of values available for the notification style. hence the workflow
configuration could not be updated.
4. Run the required programs (i.e., synchronizations)
5. run the approval workflow from the developer studio page.
6. review the status from the Status Monitor page.
7. The error message appears
8. payables, create a sample invoice.
9. validate and initiate approval.
10. review the approval history to find out the required approver. (the approver's name appears with 0 amount of approval)
11. check the notifications in the required approver's worklist.
12. there are no notifications sent.
Text continued in next action...
**** screen shots availble >http://rapidshare.com/files/176008682/error_-noperformer.doc.html
Thanks again... -
Does Declare Dynamic Cursor Support with Order Clause?
Given a dynamic cursor like
declare CUR_10 dynamic cursor for SQLSA;
prepare SQLSA from :ls_SQL;
open dynamic CUR_10;
do while TRUE
fetch CUR_10 into :ls_var1, :ls_var2
loop
where ls_SQL is "select COL1, COL2 from TABLE_A order by COL2 desc"
can I fetch values in the exact DESCENDING order of COL2?Hello Ronald,
Values will be fetched in the way you SQL statement has been defined for your dynamic cursor, so in the descending order.
I've tested your code with an Oracle connection and it works perfectly.
Just ensure to add a condition to your DO WHILE statement when the resultset is exhausted:
DO WHILE TRUE AND SQLCA.SQLCode <> 100
Kind regards,
Jacob -
Urgetnt:Generate XML Document from Oracle Tables.
Environment is :9i Release 2
Requirement : Generate XML document from the data which is vailable in Oracle tables at client location.
Could some body help me on how to get ahead on this.
Thanks in advance,
Kumar.Implimentation in PowerBuilder7(Source is experimental.. need optimization):
kml_store = create datastore
selectblob kml into :kml_result from (select get_kml(:querry_type,:tmp_querry_value,1) as kml from dual) using sqlca;
if sqlca.sqlcode=100 then
MessageBox("INFO","No data found");
return false;
end if
if sqlca.sqlcode = -1 then
MessageBox("INFO","Error in generating KMl file");
return false
end if
li_FileNum = FileOpen("test.kml",StreamMode!, Write!, LockWrite!, Replace!);
b_len=Len(kml_result)
b_len=64244;
/*inserting in file :)*/
DO WHILE b_pos<=b_len
s_pipe=String(BlobMid(kml_result,b_pos,i_str_len))
ret = FileWrite(li_FileNum,s_pipe);
s_pipe="";
b_pos=b_pos+i_str_len;
LOOP
FileClose(li_FileNum);
Message was edited by:
user601564 -
How can i migrate Power Builder 8.0 Function into oracle PL/SQL
Hi Oracle Experts...
How can i migrate Power Builder 8.0 Function into oracle PL/SQL.. I had migrate some of the coding from PB to PL/SQL. But i don't know how can i convert PB structure(here structure is a data type) into oracle PL/SQL.
Instead of structure what is the equivalent in oracle plsql
Below i pasted my POWER BUILDER FUNCTION:
Long ll_perd,ll_lnperd,ll_mon,ll_effmon,ll_instno,ll_odno
Decimal{5} ldl_actual,ldl_diff,ldl_inst
Datetime ldt_first,ldt_exp,ldt_oddt, ldt_lastprod
String ls_instmode,ls_inst
str_batch lstr_od //Structure to store odamt and oddate
Select pay_c_final,lon_d_expiry, lon_d_lastprod
Into :ls_inst,:ldt_exp, :ldt_lastprod
From loan_mast
Where branch_c_code = :gs_branch and
act_c_type = :as_actype and
act_c_no = :as_acno;
If Sqlca.Sqlcode = -1 Then
f_message('FT-0189',Sqlca.Sqlerrtext)
lstr_od.batchslno = -1
Return lstr_od
End If
If adt_prodt > ldt_exp Then
Select Ceil(months_between(:adt_prodt,:ldt_exp)) Into :lstr_od.batchslno From dual;
lstr_od.cheqdt = ldt_exp
lstr_od.batchslno = DaysAfter(Date(ldt_lastprod), Date(adt_prodt))
Else
If ls_inst = 'N' Then
If adt_prodt > ldt_exp Then
Select Ceil(months_between(:adt_prodt,:ldt_exp)) Into :lstr_od.batchslno From dual;
lstr_od.cheqdt = ldt_exp
Else
lstr_od.batchslno = 1
End If
ElseIf ls_inst = 'Y' Then
Select first_d_due,lon_c_instperd,lon_n_perd
Into :ldt_first,:ls_instmode,:ll_lnperd
From loan_mast
Where branch_c_code = :gs_branch and
act_c_type = :as_actype and
act_c_no = :as_acno;
If Sqlca.Sqlcode = -1 Then
f_message('FT-0189',Sqlca.Sqlerrtext)
lstr_od.batchslno = -1
Return lstr_od // Return Structure
End If
Select Ceil(months_between(:adt_prodt,:ldt_first)) Into :ll_mon from dual;
If ll_mon > 0 Then
Select Nvl(ln_n_balance,0),Nvl(ln_n_instlamt,0),Nvl(ln_n_instlno,0)
Into :ldl_actual,:ldl_inst,:ll_instno
From loan_inst_sch
Where act_c_type = :as_actype and
act_c_no = :as_acno and
ln_d_effdate = (Select Max(ln_d_effdate)
From loan_inst_sch
Where act_c_type = :as_actype and
act_c_no = :as_acno and
ln_d_effdate < :adt_prodt);
If Sqlca.Sqlcode = -1 Then
f_message('FT-0224', Sqlca.Sqlerrtext)
lstr_od.batchslno = -1
Return lstr_od
ElseIf Sqlca.Sqlcode = 100 Then
lstr_od.batchslno = 1
* Return lstr_od*
End If
If adl_bal > ldl_actual Then
If ldl_inst > 0 Then
lstr_od.batchslno = (adl_bal - ldl_actual) / ldl_inst
End If
Else
lstr_od.batchslno = 1
End If
If lstr_od.batchslno = 0 Then lstr_od.batchslno = 1
//For full OD
If ll_mon > ll_lnperd Then
lstr_od.batchslno = (ll_mon - ll_lnperd) + lstr_od.batchslno
End If
If ls_instmode = 'Q' Then
lstr_od.batchslno = lstr_od.batchslno * 3
ElseIf ls_instmode = 'H' Then
lstr_od.batchslno = lstr_od.batchslno * 6
ElseIf ls_instmode = 'Y' Then
lstr_od.batchslno = lstr_od.batchslno * 12
End If
Select :adt_prodt - :lstr_od.batchslno Into :lstr_od.cheqdt From dual;
If ls_instmode = 'M' Then
ll_odno = ll_instno - lstr_od.batchslno // To get OD Date
Select ln_d_effdate
Into :lstr_od.cheqdt
From loan_inst_sch
Where act_c_type = :as_actype and
act_c_no = :as_acno and
ln_n_instlno = :ll_odno;
If Sqlca.Sqlcode = -1 Then
f_message('FT-0224', + Sqlca.Sqlerrtext)
lstr_od.batchslno = -1
Return lstr_od
End If
End If
Else
lstr_od.batchslno = 1
End If
End If
End if
Return lstr_od
Thanks in adance
Arun M MWhat are you going to return the structure to? What I would normally use here if the code was going to be used by other PL/SQL would be a PL/SQL object type.
However, if PowerBuilder is still in the equation (you're moving the logic to PL/SQL but keeping PowerBuilder for the GUI ), then you'll have to return something else, because PowerBuilder doesn't understand PL/SQL object types. Perhaps passing a REF CURSOR as a OUT argument and populating it from the procedure. PowerBuilder could then retrieve the result of the procedure using a stored procedure based DataWindow. -
We have a problem accessing multiple Oracle tables from embedded SQL(Pro*C). The problem appears to occur when several functions containing embedded SQL are compiled separately. If all the Oracle functions are combined and compiled together then so far we have not found a problem.
NOTE: We have successfully compiled and run these Oracle programs on HP and IBM UNIX machines (HP-UX and AIX).
Basically the problem is that accesses to the second and subsequent tables return incorrect values - in fact it appears that the system thinks it is still accessing the first table.
For example, the following are three functions that are compiled separately
and then linked:
iesmain.pc
ies1.pc
ies2.pc
Link step:
gcc -o iesmain iesmain.o ies1.o ies2.o -L/oracle/product/8.1.5/lib -lclntsh
Execution results:
When run iesmain second table returns data but is really data from the
first table:
READING XCTNNEXT
SQLCODE = 0
JOBNAME = bulljob
SQLCODE = 100
CLOSE CURSOR CODE. SQLCODE = 0
READING LINES_IN
SQLCODE = 0
RRRCC = bullj
SQLCODE = 100
CLOSE CURSOR CODE. SQLCODE = 0
If instead you compile the three functions together then the result is different:
eg cat iesmain.pc ies1.pc ies2.pc > escat.pc
Link step:
gcc -o iescat iescat.o -L/oracle/product/8.1.5/lib -lclntsh
Execution results:
READING XCTNNEXT
SQLCODE = 0
JOBNAME = bulljob
SQLCODE = 100
CLOSE CURSOR CODE. SQLCODE = 0
READING LINES_IN
SQLCODE = 0
RRRCC = SVI01
SQLCODE = 0
RRRCC = JKA01
SQLCODE = 0
RRRCC = JKB01
SQLCODE = 0
etc
nullI too have experienced a similar problem on 8i for Linux, yet the same code works fine on 8.0.5 and 8i on Solaris. After struggling with this for a couple days I'm glad to see I am not the only one with the problem.
I tried copying the pre-compiled source from Solaris to Linux, but the problem still exists. The only significant difference between two precompiler outputs seems to be
linux :static const unsigned int sqlctx = 1;
solaris:static unsigned long sqlctx = 619115;
The code that is causing me problems is anonymous pl/sql blocks in the ProC code, executing the first block in the second file seems to re-execute the last block in the first file (this is my current thinking anyway).
Has anyone managed to successfully use multiple ProC files?
Thanks,
Jill -
The following SQL will execute a SELECT, then exit with the SQLCODE....
SELECT * FROM DUAL;
EXIT SQL.SQLCODE;
I want to add to this scenario by calling a log procedure after the select, passing in the SQLCODE:
SELECT * FROM DUAL;
EXECUTE LOG_PROC(p_name='TEST', p_sqlcode=SQL.SQLCODE) -- where p_sqlcode declared as NUMBER
EXIT SQL.SQLCODE;
Two problems:
1) The EXECUTE does not work at all, throwing the following error:
PLS-00103: Encountered the symbol "." when expecting one of the following:
Substituting "%" for "." is also rejected.
2) Even if the EXECUTE did work, would not the subsequent SQL.SQLCODE in the EXIT
reflect the EXECUTE and not the original SELECT?
My Question:
*========*
IS THERE A WAY TO STORE THE VALUE OF SQL.SQLCODE IMMEDIATELY AFTER THE
SELECT FOR LATER USE IN THE EXECUTE and EXIT STATEMENTS????Don't know. Works fine here:
SQL> CREATE OR REPLACE
2 PROCEDURE LOG_PROC (P_NAME IN VARCHAR2, P_SQLCODE IN NUMBER) as
3 begin
4 dbms_output.put_line('LOG_PROC called...p_name = ' || p_name || '...p_sqlcode= ' || p_sqlcode);
5 end;
6 /
Procedure created.
SQL> declare
2 l_dummy varchar2(1);
3 begin
4 select dummy
5 into l_dummy
6 from dual
7 where dummy = 'z';
8 exception
9 when no_data_found then
10 LOG_PROC(p_name => 'TEST', p_sqlcode => SQLCODE);
11 end;
12 /
LOG_PROC called...p_name = TEST...p_sqlcode= 100
PL/SQL procedure successfully completed. -
SQL Error: DSNT408I SQLCODE = -913
BI_PROCESS_ODSACTIVAT failed with log
03/30/2008 4:57:45 SQL Error: DSNT408I SQLCODE = -913, ERROR: UNSUCCESSFUL EXE I DBMAN 257
short dump is
Information on where terminated
The termination occurred in the ABAP program "CL_RSD_DTA====================CP"
in "DELETE_DATA_INT".
The main program was "RSPROCESS ".
The termination occurred in line 199 of the source code of the (Include)
program "CL_RSD_DTA====================CM00S"
of the source code of program "CL_RSD_DTA====================CM00S" (when
calling the editor 1990).
The program "CL_RSD_DTA====================CP" was started as a background job.
Source code extract
001690 * E_IS_VALTAB =
001700 e_is_dimtab = l_is_dimtab.
001710
001720 CHECK: l_is_dimtab = rs_c_false.
001730 ENDIF.
001740
001750 * progress
001760 l_percentage = 100 * sy-tabix / l_cnt.
001770 l_text = 'Löschen des Inhaltes von Tabelle &1'(002).
001780 REPLACE '&1' WITH l_s_mage-objname INTO l_text.
001790 CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
001800 EXPORTING
001810 percentage = l_percentage
001820 text = l_text.
001830 * drop and recreate table
001840 CALL FUNCTION 'RSDU_TABLE_TRUNCATE'
001850 EXPORTING
001860 i_tablnm = l_s_mage-objname
001870 EXCEPTIONS
001880 OTHERS = 1.
001890 IF sy-subrc = 0.
001900 MESSAGE s860(r7) WITH l_s_mage-objname INTO l_dummy.
001910 * Datenbank-Tabelle &1 wurde gelöscht und neu angelegt
001920 CALL METHOD cl_rso_application_log=>add_message.
001930 ELSE.
001940 MESSAGE e861(r7) WITH l_s_mage-objname INTO l_dummy.
001950 * Datenbank-Tabelle &1 konnte nicht gelöscht bzw. neu angelegt werden
001960 CALL METHOD cl_rso_application_log=>add_message.
001970 * raise here (sending message only does not notify
001980 * the caller about the error)
> RAISE failed.
002000 ENDIF.
002010 ENDLOOP.
002020 ENDIF. "just delete data
002030 ENDIF. "e_data_exists = rs_c_true
002040 * 3. actions after deletion of dataHi,
Looks like you should find out from your Basis / DB person what the error code 913 stands for, it could be a resource availability issue
Excerpt from the below link:
http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db2.doc.mc/msgs/dsnt408i.html
"This message contains an SQL return code and a brief explanation, with text inserted from the SQLERRM field. The SQL return code is negative, indicating that an error has occurred. For more information about this SQL return code, see DB2 Codes." -
I will give $100 to the person who can solve this problem once and for all.
I'm not even kidding, dude. We can do PayPay, I'll mail you a check, whatever you want. That is how frustrating this is, that is how badly I want it fixed, and that is how much overtime I've worked lately thanks to being shorthanded at my place of biz-nass. I'm an hombre of my word, so if you actually come up with a solution that works, the cheddar will be yours. Okay let's hit it.
It's the skipping thing. First 10-12 seconds of a song - every song - will play fine, then iTunes skips, stutters, and basically does the god **** hokey pokey and shakes it all about. It happens most notably with songs that I double-click to play, but I'm pretty much noticing it on any song now after a transition is made. I've been using iTunes for ages and this didn't happen until the upgrade to 7.3. I have poured over these forums for nearly a week, tried every solution offered (even offered one of my own that actually worked for maybe four days before the whole thing started up again) and NOTHING. To save us all some time, here's what I've tried:
- Downgrading. I'll admit I didn't do this correctly at first. I didn't remove everything according to the support guidelines, but I went down to version 6.05 and that did nothing to quell the skipping. I upgraded back up to 7.3 because hey, why not, and attempted the remaining trial fixes. I have since removed both iTunes and Quicktime, step my step according the the guidelines, and not only have I downgraded to my current running version of 7.2, I put both of the programs on my F drive (as opposed to the default C drive), my gigantic bonus internal drive where I typically keep nothing but my giganto music library. I thought putting the app on the same drive as the music might fix things. I thought wrong. Dead wrong. Dead diddly dum iddly wrong.
- Quicktime settings. My settings for Quicktime have always been in safe mode with the output size at 16 bits. So when I saw this "fix" I just rolled my eyes. I used to have that dealio back in the dizzle when iTunes would just get all static-y and skip when I'd open other programs or even just minimize it, so that fix worked for that, but it's nothing compared to this. In simpler terms, that fix is like Superman, and this skipping? The kryptonite. Actually that's probably not a great metaphor, but we've got a ways to go and this is going to get mucho boring if I don't throw some chuckles out there. Ready for fix three? Giddy up!
- Turn off cross-fade? It's never been on. I never really got the appeal of that, and also I think it resulted in some minor skipping back in the d. I also attempted similar fixes like turning off the equalizer, messing with the volume, closing last.fm, REMOVING an old album art retrieval program from back before iTunes got its **** together with album art, ANYTHING that might interfere with playback was turned off, removed, b-slapped, and sent crying home to its moms. Nada.
- Recreating my library. This was the fix I offered someone else, because it actually did the trick for a few days. After an entire night spent reimporting 73 gigs worth of music, it played fine, but I did lose a ton of album art, playcounts, etc, so you can imagine how ****** I was when this wound up not being a permanent fix. I was beyond ******. I was livid. But I was taught in the dojos of my youth to channel my anger into productivity, and instead of sculpting a lovely bonsai tree, I set out to fix this pup once and for all.
- That darn anti-virus! This was the final fix I tried, even though I wasn't using any of the culprit programs listed in the forums as causes of the skipping, and even those offering this as a solution confessed it was pretty hit or miss. But having tried everything else, having resorted to playing my music on MediaMonkey of all things, I figured I'd give it a shot. I used (reason for the past-tense forthcoming) AVG Anti-Virus, Lavasoft AdAware and something called Spyware Doctor that I think just came bundled with XP. I removed all of them. I had just done a virus scan recently to see if that's what was causing this, so I figured I'd be okay until I could redownload them after this fix wound up not working. And it didn't work, so there's that.
There may be a couple of fixes I've tried that I'm forgetting now, since I'm delirious after spending practically every night for the past week trying to fix this problem, while my girlf, Heather, sits and laughs at me while watching Clark and Michael on her MacBook. In fact, she's laughing at the $100 offer as I type this, but I assure you, if you offer a solution that works, the money is as good as yours. If you come up with a workable solution, I'll have to test and make sure it isn't temporary like the recreating my library thing, but I won't leave you hanging once I'm satisfied that it's fixed for good. I know it's unorthodox, perhaps illegal in some states, but I'm desperate here, peeps. The ball is in your court, and I beg you not to give up the rock.
Gateway E-2000 Windows XPI think the problem lays with Last.fm. I had the same exact problem as you. In your processes screen, end the task "lastfmhelper.exe" Last.fm still scrobbles. The tracks don't skip, although I notice there is still a bit of a lag in the first part of the song - but if you can deal with that, no skipping. I think you will have to end that task everytime you boot up your computer, or uninstall last.fm completely until they fix it; it is a bug in their software, as opposed to iTunes.
Maybe you are looking for
-
How to maintain description of g.l in different language
Hi All, Could you please advice how we can maintain descrioption of gl account in different language. We have a requirement to maintain description of g.l account in french language. Please suggest Regards Deepak
-
Can I replace the cable of the TravelSound 400 by a standard audio cable if I damage it?
I am very interested by the TravelSound 400. Before buying it, I would like to ensure me that its cable is well separated from the speakers, that if I damage it I can replace it by a standard audio cable and that I will not have to purchase a new spe
-
Website options for e-commerce.
Hello, everyone. I am setting up a simple website that I intend to use (among other things) to sell a few items associated with services I will be offering in this site. My website will be hosted at my own local server and I don't have the advanced t
-
Filter the secondary datasource based on lookup column
Hello All, I am customizing a List form. I have a secondary data connection which is a datasource for my drop down list. I have to filter the datasource based on Lookup column value. I know how to filter on the datasource by going to entries and filt
-
Connect iPad to MAC computer and get this message: iTunes could not connect to the iPad because the device timed out. What is the likely problem???