Setting up Gas Procedures in Register
Hello Everyone,
I am trying to carry out gas billing settings in SPRO. I gave done the general settings in ISU->Contract billing->Special functions etc. For gas billing the procedure has to be defined at the register level.
While trying to do a Full Installation via EG31 i am not able to see the gas procedure when pressing F4 that has been defined in SPRO. The temperature area, pressure area etc are available in the F4 dropdown but gas proceudre is not visible. Also we cannot enter this manualy. It has to be selected from a drop down list. But the gas procedure filed drop down does not show anything. This is despite there being 3 gas procedures defined in SPRO and stored in stanadard table TE699.
1. Can some one explain as to why the gas procedure is not coming up in the F4 dropdown.
2. Also though i have made these settings i am not clear on where and how they are utilised in the billing process. Can any one provide an example or document on gas billing.
Thanks in advance,
Avneet
http://help.sap.com/saphelp_utilities472/helpdata/en/c6/4dc810eafc11d18a030000e829fbbd/content.htm
Regards,
Siva
Similar Messages
-
Set parameter (call procedure) before selecting view
Dear all,
we want to query a view from an oracle database. The view requires a workspace to be set using a procedure (background: we want to report Oracle Warehouse Builder execution time. to query the table/view with the performance data a procedure called wb_workspace_management.set_workspace('OWB','OWB') needs to be called at the beginning of the session.
We have imported the view to OBIEE but don't know how we can set the workspace - execute the procedure - at the beginning of each session.
Any idea where to go ?
Regards,
Knut
Edited by: knherzog on 20.06.2011 06:44Hi Knut,
I do not understand exactly what you are trying to achieve, but I think you have to take a look at the Connection Pool. Here you can add some scripts / procedures to be executed on connect or disconnect. You can also execute these scripts / procedures before or after query.
Hope this is what you are looking for.
Cheers,
Daan Bakboord
http://obibb.wordpress.com -
My Ipad will show all regular inbound calls, from Iphone, as Facetime calls. I would like only TRUE facetime calls to appear. I have switched audio/video on Ipad but it still happens. How can I set the Ipad to only register only true FT calls rather than all inbound calls that a re not facetime calls? Yes, you may have to reread this twice and slowly to understand..... Thanks!
Hi webn,
I understand that you do not wish to see phone calls on your iPad anymore. I have an article for you with some information on accomplishing this goal:
Connect your iPhone, iPad, iPod touch, and Mac using Continuity - Apple Support
https://support.apple.com/en-us/HT6337
Turn off iPhone cellular calls
To turn off iPhone cellular calls on your iPad or iPod touch, go to Settings > FaceTime and turn off iPhone Cellular Calls.
On your Mac, open the FaceTime app and go to FaceTime > Preferences. Click Settings and deselect the iPhone Cellular Calls option.
Thanks for coming to the Apple Support Communities!
Cheers,
Braden -
Return a record set from a procedure
I am building an application for my company.
Before oracle I had used MS SQL Server for a long time.
I build a procedure as following
CREATE OR REPLACE PROCEDURE YBP.ReturnSet
-- Return a record set from a procedure
IS
BEGIN
SELECT * FROM fdbase;
END;
But the complier show me a error message:
<font color="#0000FF">PLS-00428 an INTO clause is expected in this SELECT statement</font>
I read the error details
<font color="#0000FF">"In PL/SQL, only a subquery is written without an INTO clause."</font>
But I know that this procedure can run well in <font color="#0000FF">MS SQL Server .</font>
How I can do this thing in Oracle
Any help will be appreciate!I have a stored proc that is defined as
CREATE or REPLACE
PROCEDURE ABC
(linkid IN CHAR,
Year_in IN DATE,
Method_in IN CHAR,
Date_out OUT DATE,
average_out OUT NUMBER)
is
begin
.. Date_out := ...;
average_out := ...;
end;
another partially completed stored proc that returns a ref
cursor defined as follows:
create or replace package zzz
as
type cursorType is ref cursor;
end;
create or replace function test return zzz.cursortype
as
date_OUT date;
Average_OUT number;
l_cursor zzz.cursorType;
CURSOR temp_cur is
SELECT l.linkid, L.routenumber, ABC(l.linkid,
to_date('01/01/2000', 'mm/dd/yyyy'),
'2',
date_OUT,
average_OUT)
FROM LINK l
WHERE l.LINKID <= '010999';
begin
open temp_cur;
end;
inside test (which I need help completing), how can I refer to
the date_out and the average_out params returned by ABC() so
that these values are in turn passed to the cursortype defined
in package zzz?
Thanks in advance. -
Gas procedure not in table TE669
Dear Experts,
while doing billing i am getting error message as Gas procedure not in table TE669.
I found that in my installation under reg data there is no gas procedure allocated, i tried to enter gas procedure in installation change mode, but still that field comes in disable mode, can any one tell me from where i can enter that gas procedure for that particular installation?
thanks.. cheers.HI avinash,
Thanks for reply, but in eg70, temp area. air prusere area fields coming in disable mode, if i didn't enter these two it wont allow me to save. do u have any idea y its coming in disabled mode.
it was happening for the new time slice only, same device used for new time slice also, but in previous time slice it was picked all the values. and its happening only for one customer.
This is the Error msg i am getting:
Gas procedure XXX vol. corr. factor proc. XXX: temp. area is missing
Message no. AH695
Diagnosis
You have selected the specified volume correction factor procedure as the gas procedure. The temperature is calculated using a procedure for which the concrete gas temperatures are entered for each temperature area.
System Response
Error
Procedure
Specify an appropriate temperature area, or select a different gas procedure that does not require a temperature area.
Cheers. -
Which procedures are registered on an alert?
Hi,
I'm working on a big and (for me) new system which uses (a lot of) alerts.
Is there a way to find out, which procedures are registered or listening on alert XYZ?
Thanks
Mephiselect * from dba_source
where lower(text) like '%dbms_alert.register%';
OWNER NAME TYPE LINE TEXT
SYS DBMS_ALERT PACKAGE 39 -- dbms_alert.register('emp_table_alert');
1 row selected.if your "alert"-message is not dinamic, then
select distinct owner, name, type
from dba_source
where lower(text) like '%dbms_alert.register%'
intersect
select distinct owner, name, type
from dba_source
where lower(text) like lower('%alertXYZ%') -
hi,
sap gurus,
how to set partner determination procedure for customer
hierarhies.........
regards,
balaji.t
09990019711.Hello Rajesh,
The PDP is set up in customizing.You must create a regular partner determination procedure.In the IMG choose
CRM>Basic Functions>Partner Processing-->Define Partner Determination Procedure
You can define a partner determination procedure for each object type.
PDP assigned to the object type Campaign can also be campaign-type-dependent.
IMG:CRM>Marketing>Marketing Planning and Campaign Management>Partner Processing>
Assign Partner Determination Procedure
Hope this helps!
Best Regards,
Shanthala Kudva. -
Setting ViewObject Stored Procedure Where Clause Param from Struts Action
I adapted/used Steve's example to get stored procedure to populate my ViewObject. However, I could not retrieve any rows after passing whereClause value from Struts action. The param in execureQueryForCollection returns null.
What could be wrong. Thanks.
Here's my code.
ViewObjectImpl:
package org.adb.sls.model;
import java.math.BigDecimal;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.sql.Types;
import oracle.jbo.JboException;
import oracle.jbo.domain.Date;
import oracle.jbo.domain.Number;
import oracle.jbo.server.DBTransaction;
import oracle.jbo.server.ViewObjectImpl;
import oracle.jbo.server.ViewRowImpl;
import oracle.jbo.server.ViewRowSetImpl;
import oracle.jdbc.driver.OracleCallableStatement;
import oracle.jdbc.driver.OracleTypes;
// --- File generated by Oracle ADF Business Components Design Time.
// --- Custom code may be added to this class.
public class ViewApplicableLoanTypesImpl extends ViewObjectImpl
* PLSQL block that will execute the REF_CURSOR
private static final String SQL =
"begin ? := sls_loan_types_pkg.get_applcbl_staff_lns_fn(?); end;";
* PLSQL block that will count the REF_CURSOR returned rows
private static final String COUNTSQL =
"begin ? := sls_loan_types_pkg.get_count_applcbl_staff_lns_fn(?); end;";
* This is the default constructor (do not remove)
public ViewApplicableLoanTypesImpl()
* Overridden framework method.
* Wipe out all traces of a built-in query for this VO
protected void create() {
getViewDef().setQuery(null);
getViewDef().setSelectClause(null);
setQuery(null);
* Overidden framework method
protected void executeQueryForCollection(Object qc, Object[] params, int noUserParams)
// input parameter is employee number
String employeeNumber = null;
if (params != null) {
employeeNumber = (String) params[0];
} else
System.out.println("param is null");
storeNewResultSet(qc,retrieveRefCursor(qc,employeeNumber));
super.executeQueryForCollection(qc, params, noUserParams);
protected ViewRowImpl createRowFromResultSet(Object qc, ResultSet rs)
* We ignore the JDBC ResultSet passed by the framework (null anyway) and
* use the resultset that we've stored in the query-collection-private
* user data storage
rs = getResultSet(qc);
* Create a new row to populate
ViewRowImpl r = createNewRowForCollection(qc);
try {
* Populate new row by attribute slot number for current row in Result Set
populateAttributeForRow(r,0, nullOrNewNumber(rs.getBigDecimal(1)));
populateAttributeForRow(r,1, nullOrNewNumber(rs.getBigDecimal(2)));
populateAttributeForRow(r,2, rs.getString(3));
populateAttributeForRow(r,3, nullOrNewNumber(rs.getBigDecimal(4)));
populateAttributeForRow(r,4, rs.getString(5));
catch (SQLException s) {
throw new JboException(s);
return r;
protected boolean hasNextForCollection(Object qc)
ResultSet rs = getResultSet(qc);
boolean nextOne = false;
try {
nextOne = rs.next();
* When were at the end of the result set, mark the query collection
* as "FetchComplete".
if (!nextOne) {
setFetchCompleteForCollection(qc, true);
* Close the result set, we're done with it
rs.close();
catch (SQLException s) {
throw new JboException(s);
return nextOne;
protected void releaseUserDataForCollection(Object qc, Object rs)
* Ignore the ResultSet passed in since we've created our own.
* Fetch the ResultSet from the User-Data context instead
ResultSet userDataRS = getResultSet(qc);
if (userDataRS != null) {
try {
userDataRS.close();
catch (SQLException s) {
/* Ignore */
super.releaseUserDataForCollection(qc, rs);
public long getQueryHitCount(ViewRowSetImpl viewRowSet)
Object[] params = viewRowSet.getParameters(true);
String id = (String)params[0];
CallableStatement st = null;
try {
st = getDBTransaction().createCallableStatement(COUNTSQL,DBTransaction.DEFAULT);
* Register the first bind parameter as our return value of type CURSOR
st.registerOutParameter(1,Types.NUMERIC);
* Set the value of the 2nd bind variable to pass id as argument
if (id == null) st.setNull(2,Types.VARCHAR);
else st.setString(2,id);
st.execute();
return st.getLong(1);
catch (SQLException s) {
throw new JboException(s);
finally {try {st.close();} catch (SQLException s) {}}
* Return a JDBC ResultSet representing the REF CURSOR return
* value from our stored package function.
private ResultSet retrieveRefCursor(Object qc,String id) {
CallableStatement st = null;
try {
st = getDBTransaction().createCallableStatement(SQL,DBTransaction.DEFAULT);
* Register the first bind parameter as our return value of type CURSOR
st.registerOutParameter(1,OracleTypes.CURSOR);
* Set the value of the 2nd bind variable to pass id as argument
if (id == null) st.setNull(2,Types.VARCHAR);
else st.setString(2,id);
st.execute();
ResultSet rs = ((OracleCallableStatement)st).getCursor(1);
* Make this result set use the fetch size from our View Object settings
rs.setFetchSize(getFetchSize());
return rs ;
catch (SQLException s) {
s.printStackTrace();
throw new JboException(s);
finally {try {st.close();} catch (SQLException s) {}}
* Store a new result set in the query-collection-private user-data context
private void storeNewResultSet(Object qc, ResultSet rs) {
ResultSet existingRs = getResultSet(qc);
// If this query collection is getting reused, close out any previous rowset
if (existingRs != null) {
try {existingRs.close();} catch (SQLException s) {}
setUserDataForCollection(qc,rs);
hasNextForCollection(qc); // Prime the pump with the first row.
* Retrieve the result set wrapper from the query-collection user-data
private ResultSet getResultSet(Object qc) {
return (ResultSet)getUserDataForCollection(qc);
* Return either null or a new oracle.jbo.domain.Date
private static Date nullOrNewDate(Timestamp t) {
return t != null ? new Date(t) : null;
* Return either null or a new oracle.jbo.domain.Number
private static Number nullOrNewNumber(BigDecimal b) {
try {
return b != null ? new Number(b) : null;
catch (SQLException s) { }
return null;
Struts Action
package org.adb.sls.view;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oracle.jbo.ApplicationModule;
import oracle.jbo.ViewObject;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import oracle.adf.model.binding.DCDataControl;
import oracle.adf.model.bc4j.DCJboDataControl;
import oracle.jbo.html.BC4JContext;
public class IndexAction extends DefaultADFAction
protected ActionForward performActionLogic(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response)
throws Exception {
try {
ApplicationModule am = getApplicationModule("SLSApplicableLoanTypesDataControl", request);
if (am == null)
System.out.println("am is null");
ViewObject vo = am.findViewObject("ViewApplicableLoanTypes");
vo.setWhereClauseParam(0,request.getSession().getAttribute("SSO_EMPLOYEE_NUMBER"));
vo.executeQuery();
} catch (Exception e)
e.printStackTrace();
return mapping.findForward("success");
Struts Config
<form-beans>
<form-bean name="DataForm" type="oracle.adf.controller.struts.forms.BindingContainerActionForm"/>
</form-beans>
<action-mappings>
<action path="/index" className="oracle.adf.controller.struts.actions.DataActionMapping" type="org.adb.sls.view.IndexAction" name="DataForm" unknown="false">
<set-property property="modelReference" value="indexUIModel"/>
<forward name="success" path="/home.do"/>
</action>
<action path="/home" className="oracle.adf.controller.struts.actions.DataActionMapping" type="oracle.adf.controller.struts.actions.DataForwardAction" name="DataForm" parameter="/index.uix" unknown="true">
<set-property property="modelReference" value="indexUIModel"/>
</action>
</action-mappings>I just found the solution. I've overridden setWhereClause method.
public void setWhereClauseParams(Object[] values)
ViewObjectImpl vo = (ViewObjectImpl) super.getViewObject();
vo.setWhereClauseParam(0,values[0]);
} -
Hashset Object Setting in Stored procedure
I have a store Procedure:
CREATE PROCEDURE TESTING_SET(TEST_SET SET(CHAR(100) NOT NULL))
RETURNING CHAR(100);
DEFINE element CHAR(100);
FOREACH SELECT * INTO element FROM TABLE(TEST_SET)
RETURN element WITH RESUME;
END FOREACH;
END PROCEDURE;
I am trying to call a stored procedure using CallableStetement. The stored procedure accepts a SET object. So I am setting the Hasset as CallableStatement.setObject(HashSet);
But when the CallableStatement.execte() is called I am getting the following error:
java.sql.SQLException: Routine (testing_set) can not be resolved.
at com.informix.jdbc.IfxSqli.a(IfxSqli.java:3631)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3963)
at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2693)
at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2609)
at com.informix.jdbc.IfxSqli.a(IfxSqli.java:1828)
at com.informix.jdbc.IfxSqli.executeExecute(IfxSqli.java:2521)
at com.informix.jdbc.IfxSqli.executeExecute(IfxSqli.java:2461)
at com.informix.jdbc.IfxResultSet.b(IfxResultSet.java:393)
at com.informix.jdbc.IfxStatement.a(IfxStatement.java:1326)
at com.informix.jdbc.IfxPreparedStatement.d(IfxPreparedStatement.java:449)
at com.informix.jdbc.IfxCallableStatement.execute(IfxCallableStatement.java:331)
at com.west.wic.test.HashSetTest.main(HashSetTest.java:40)
Caused by: java.sql.SQLException
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3968)
... 10 more
error message:Routine (testing_set) can not be resolved.
error code:-674
Please help me in this regard.>
I wasn't directly replying to you
>
Well maybe that wasn't your intention but that is what this line in the reply means:
>
Posted: May 3, 2013 12:19 PM in response to: rp0428
>
That means you are responding to 'rp0428'; that's me. So when you say this
>
But first make sure that the database user you're using
>
And because your comments are 'in response to: rp0428' the word "you're" is generally going to be interpreted to mean 'rp0428' unless you indicate otherwise.
If you had responded to OP that word "you're" would mean you are telling OP to
>
first make sure that the database user you're using
>
It isn't a question of 'right'; it is a question of how to address your remarks to the proper person so that that person KNOWS the remarks are meant for them.
Here's an easy way for you to remember who to reply to: it is the same person you would LOOK at if you were in the same room with them.
You would be looking at me while you were listening to my comments. Then you would turn and look at OP when you made yours. In the forum you accomplish that by using the 'reply' link on one of OP's comments.
If, for some reason, you did want to make comments to both of us in your one reply then pick one to reply to, even me, and then preface your comment to OP like this:
>
-- comment here for rp0428 - but you didn't make any
OP: first make sure that the database user you're using . . .
>
See how that 'OP:' prefix makes it clear that, even though your comments are 'in response to: rp0428' that particular comment is meant for OP?
It might be aarkward at first but once you try it a few times you'll get the hang of it. ;) -
Setting pl/sql procedure as the data source in a Report Query
Is there a way to set PL/SQL as the data source in a Report Query? we want to
able to use the ReportQuery function and query results returned by a PL/SQL procedure.
thanksNot exactly sure what you want to do, but on a ReportQuery you can set either a StoredProcedureCall, or an SQLCall.
query.setCall(new StoredProcedureCall(...));
query.setCall(new SQLCall("begin; my_proc(); end"));
Now, a stored procedure in Oracle cannot return a result, so using a ReportQuery which requires a result may not make sense.
You could instead use a DataModifyQuery.
If you return results through output parameters (you must use a StoredProcedureCall for this) you could use a DataReadQuery or a ReadAllQuery/ReportQuery if you wish to build objects from the data.
James : http://www.eclipselink.org -
How to set a Extent Procedure connection in Net8
I want use ORDIMAGE,but I don't know how to set extent procedure in Net8. Is it necessory? And I how to set it?
Thanks.<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by [email protected]:
Are there some other documents about oc4j that you could sent?
I have been looking on orionserver but the documentation is not complet.<HR></BLOCKQUOTE>
For Orion, your best bet is not the documentation but to search for your topic via the extensive mailing list. It is quite active and discusses such topics as pooled connections...also for other sorts of information, look at www.orionsupport.com and www.jollem.com. -
Performance to fetch result set from stored procedure.
I read some of related threads, but couldn't find any good suggestions about the performance issue to fetch the result set from a stored procedure.
Here is my case:
I have a stored procedure which will return 2,030,000 rows. When I run the select part only in the dbartisan, it takes about 3 minutes, so I know it's not query problem. But when I call the stored procedure in DBArtisan in following way:
declare cr SYS_REFCURSOR;
firstname char(20);
lastname char(20);
street char(40);
city char(20);
STATE varchar2(2);
begin DISPLAY_ADDRESS(cr);
DBMS_OUTPUT.ENABLE(null);
LOOP
FETCH cr INTO firstname,lastname,street, city, state;
EXIT WHEN cr%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( firstname||','|| lastname||','|| street||',' ||city||',' ||STATE);
END LOOP;
CLOSE cr;
end;
It will take about 100 minutes. When I used DBI fetchrow_array in perl code, it took about same amount of time. However, same stored procedure in sybase without using cursor, and same perl code, it only takes 12 minutes to display all results. We assume oracle has better performance. So what could be the problem here?
The perl code:
my $dbh = DBI->connect($databaseserver, $dbuser, $dbpassword,
{ 'AutoCommit' => 0,'RaiseError' => 1, 'PrintError' => 0 })
or die "couldn't connect to database: " . DBI->errstr;
open OUTPUTFILE, ">$temp_output_path";
my $rc;
my $sql="BEGIN DISPLAY_ADDRESS(:rc); END;";
my $sth = $dbh->prepare($sql) or die "Couldn't prepare statement: " . $dbh->errstr;
$sth->bind_param_inout(':rc', \$rc, 0, { ora_type=> ORA_RSET });
$sth->execute() or die "Couldn't execute statement: " . $sth->errstr;
while($address_info=$rc->fetchrow_arrayref()){
my ($firstname, $lastname, $street, $city, $STATE) = @$address_info;
print OUTPUTFILE $firstname."|".$lastname."|".$street."|".$city."|".$STATE;
$dbh->commit();
$dbh->disconnect();
close OUTPUTFILE;
Thanks!
rulinThanks for you reply!
1) The stored procedure has head
CREATE OR REPLACE PROCEDURE X_OWNER.DISPLAY_ADDRESS
cv_1 IN OUT SYS_REFCURSOR
AS
err_msg VARCHAR2(100);
BEGIN
--Adaptive Server has expanded all '*' elements in the following statement
OPEN cv_1 FOR
Select ...
commit;
EXCEPTION
WHEN OTHERS THEN
err_msg := SQLERRM;
dbms_output.put_line (err_msg);
ROLLBACK;
END;
If I only run select .. in DBArtisan, it display all 2030,000 rows in 3:44 minutes
2) But when call stored procedure, it will take 80-100 minutes .
3) The stored procedure is translated from sybase using migration tools, it's very simple, in sybase it just
CREATE PROCEDURE X_OWNER.DISPLAY_ADDRESS
AS
BEGIN
select ..
The select part is exact same.
4) The perl code is almost exact same, except the query sql:
sybase verson: my $sql ="exec DISPLAY_ADDRESS";
and no need bind the cursor parameter.
This is batch job, we create a file with all information, and ftp to clients everynight.
Thanks!
Rulin -
Getting result set from stored procedures in database controls in weblogic
I am calling a stored procedure from database control which actually returns a result set
when i call the stored procedure like
* @jc:sql statement="call PROC4()"
ResultSet sampleProc() throws SQLException;
it gives me exception saying
"weblogic.jws.control.ControlException: Method sampleProc is DML but does not return void or int"
I would appreciate any help
Thanks,
UmaThanks for you reply!
1) The stored procedure has head
CREATE OR REPLACE PROCEDURE X_OWNER.DISPLAY_ADDRESS
cv_1 IN OUT SYS_REFCURSOR
AS
err_msg VARCHAR2(100);
BEGIN
--Adaptive Server has expanded all '*' elements in the following statement
OPEN cv_1 FOR
Select ...
commit;
EXCEPTION
WHEN OTHERS THEN
err_msg := SQLERRM;
dbms_output.put_line (err_msg);
ROLLBACK;
END;
If I only run select .. in DBArtisan, it display all 2030,000 rows in 3:44 minutes
2) But when call stored procedure, it will take 80-100 minutes .
3) The stored procedure is translated from sybase using migration tools, it's very simple, in sybase it just
CREATE PROCEDURE X_OWNER.DISPLAY_ADDRESS
AS
BEGIN
select ..
The select part is exact same.
4) The perl code is almost exact same, except the query sql:
sybase verson: my $sql ="exec DISPLAY_ADDRESS";
and no need bind the cursor parameter.
This is batch job, we create a file with all information, and ftp to clients everynight.
Thanks!
Rulin -
Can we pass temporary result set to the procedure?
Hi,
The result set is stored in a temporary storage. Can we pass that resultset to the procedure?
Thanks and regards
Gowtham Sen.I'm still unclear just what this result set is... Is is a table or a cursor or something else?
If you imply the physical result set of a SQL query, there is no such thing in Oracle. Oracle does not create and store a result set in memory containing the rows of the SQL SELECT. Creating such sets in memory does not scale. A single SELECT on such a database can kill the performance of the entire database by exhasuting all memory with a single large physical result set.
Oracle "results" live in the database cache (residing in the SGA). Rows (as data blocks) are paged into and out of this case as demand dictates. When PL/SQL code, for example, fetches a row, the SQL engine grabs the row from the db cache (SGA) and copies it to the PGA (the private memory area of the PL/SQL process). The row also may not yet exist in the db cache - in which case it needs a physical read from disk to get the data block containing that row into the db cache (after which it is copied to the PGA).
A PL/SQL process can do a bulk fetch - e.g. fetch a 100 rows from the SQL query/cursor at a time. In that case, a 100 rows are copied from the SGA db cache to the PGA.
At no time is there are single large unique and dedicated memory struct in the SGA that contains the complete "result set" of a SQL query.
Once you have fetched that row, that is it. Deal is done. You cannot reverse the cursor and fetch the row again. After you have fetched the last row in that cursor, you cannot pass that cursor to another process - the cursor is now empty. That other process cannot rewind the cursor and start fetching from the 1st row again. You will need to pass the SQL to that process in order for it to create its own cursor - also keeping in mind that in between the rows can have changed and that this other process could now see different results with its cursor.
If you want to create such a physical temporary result set that is consistent and re-usable, you can use a temporary table - and insert the results of the SELECT into this temp table for further processing. This temp table is session specific and is auto destroyed when the session terminates.
A comment though - it sounds like you're approaching the date warehouse processing (scrubbing, transformation and loading of data) as a row-by-row process.
That is a flawed approach. Row-by-row processing does not scale. One should deal with data sets. Especially when the volumes are large. One should also attempt to perform minimal passes through a data set. Processing a bunch of rows, then passing that rows to another process to do some processing on the same rows.. this means multiple passes through the same data. That is very inefficient performance and resource wise. -
Set compatability mode procedure
Hi folks
Is there any way to interrogate the current status of this parameter?
I have exported, imported and copied my apps a number of times lately and I am not sure whether apex might deem any of these operations as being a "new" application and therefore set the parameter accordingly.
Obviously there must be a means of getting the parameter, but it hasn't rated a mention in any of the doco I've read so far.
Regards
CScreate or replace procedure cau_2
(ngay1 date,ngay2 date)
as
cursor c is (select kh1.ID, kh1.TenKH, kh1.TenDayDuKH
from Khachhang kh1
where kh1.ngaysinh >= Ngay1 and kh1.ngaysinh <= Ngay2);
begin
for kh1 in c
loop
dbms_output.put_line(kh1.ID || ',' || kh1.TenKH || ',' || kh1.TenDayDuKH);
end loop;
end; THIS IS A PROCEDURE accept 2 VARIABLE ngay1(day) ngay2(day) and export all customer(khachhang) who have birthday betwwen ngay1 and ngay2. I try using syntax of you but it's not complied.
Edited by: [email protected] on 23:02 12-06-2010
Maybe you are looking for
-
Move photos to trash from Bridge and can't find them in trash
Help! When I was doing the selection from Bridge, I delete some of the photos by selecting them then clicked 'move to trash', but I can't find them in trash,I am using Bridge CC, When I was using the previous edition there's no problem, but things ch
-
Hi apps\collab\commons\components\components\.content.xml: Some files need to be updated first .Specify --force to overwrite remote files. while vlt command co What has to be done?
-
I want to know what the resolution is of the people using my application. Can I maximize my window? Or can I get the users screen-resolution? In case it is a simple command, could you please give me a sample code? Greetz and thanks in advance, Kanari
-
Split file zip with cl_abap_zip
Hi, I must to split a zip file in parts of 50 mb. How can I do? Can I use CL_ABAP_ZIP->splice? Thank you very much
-
Hello. First of all, please forgive my lack of knowledge as I am trying to seek the assistance of those who can help a fellow 'Go to IT Guy' at work. I have three subnets that im trying to push to our new idf closet which we had built to acommodate t