Reg: Limit on calling no of procedures inside a proc
Dear All,
I am sure it is bit silly question, but wanted to clarify. Do we have any limit on calling the no of procedures inside a procedure.
Thanks.
It depends on exactly what you are asking...
In general, you can call as many procedures as you'd like. There are limits on the size of objects like procedures so, in theory, there is a point where a procedure would get so large that you'd have to break it up. Of course, good programming practice would be to break the procedure up long, long before that point if only to keep it readable. There are also potentially limits on things like recursion depth which might be something you're asking about.
Justin
Similar Messages
-
Calling java class/procedure inside a trigger
Hi all
I want like to call a java procedure from a trigger.
i know that i should load the class then write call specification and then call the java stored procedure.
Before that what are the prerequisites ..
Do i need to install java on my local machine?
secondly for sample testing can you provide me a sample java code that will connect to my db and inserts some sample data into sample table
regards
rajHi Here are the Details: I have the following
Java File : Helloworld.java
Class File : HelloWorld.class
Location of Java and Class Files: C:\Program Files\Java\jdk1.6.0_13\
Method : main(java.lang.String[])
Helloworld.java
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
loadjava -u HR/hr@ORCL C:\Program Files\Java\jdk1.6.0_13\HelloWorldApp.class ( From where should i run this command ?should i go to windows--start--cmd ? )
CREATE OR REPLACE PROCEDURE sayhello ()
AS LANGUAGE JAVA
NAME 'HelloWorld.main(java.lang.String[])';
CREATE OR REPLACE TRIGGER sal_trig
AFTER UPDATE OF sal ON emp
FOR EACH ROW
CALL sayhello(); ------------------ ( where do i see the output when i call the procedure?)
regards
raj
Edited by: raj_fresher on May 20, 2009 7:57 AM -
JTA timeout while calling a stored procedure inside a DB Adapter
Hi All,
I am wondering if there is a way to increase the timeout interval for the DB Adapter at the BPEL process level than at a global level.
Thanks,If you're using Oracle Provider for OLE DB (OraOLEDB) to execute this stored procedure, you need to set PLSQLRSet attribute. This attribute can be set in registry, connection string, or command object. Please refer to User Documentation for more information.
-
How to call procedure inside a procedure and need to sore the value in a variable?
HI ALL,
i am usung oracle 11g.
here is my package and procedure
i want to call get_email_details this procedure inside the process_email_master and want to keep the value inside a varible in master procedure
create or replace
PACKAGE ms_gen_process_email
as
type email_type is record(subject varchar2(4000 char),
email_body varchar2(4000 char),
to_receipent varchar2(4000 char),
cc_receipent varchar2(4000 char));
type email_type_table is table of email_type;
procedure process_email_master(
p_metric_name IN VARCHAR2,
p_current_stage in varchar2,
p_action in varchar2,
p_pid in number,
P_OBJECT_ID in varchar2
--p_emai_master out p_email_type_table
PROCEDURE get_email_details (
p_metric_name IN VARCHAR2,
p_current_stage in varchar2,
P_ACTION in varchar2,
p_email_type_table1 out email_type_table
END ms_gen_process_email;
create or replace
PACKAGE BODY ms_gen_process_email
as
procedure process_email_master(
p_metric_name IN VARCHAR2,
p_current_stage in varchar2,
p_action in varchar2,
p_pid in number,
p_object_id in varchar2
as
begin
null;
EXCEPTION
WHEN OTHERS
then
null;
end process_email_master;
PROCEDURE get_email_details (
p_metric_name IN VARCHAR2,
p_current_stage IN VARCHAR2,
P_ACTION in varchar2,
p_email_type_table out email_type_table
as
BEGIN
select subject, email_body, to_receipent, cc_receipent
bulk collect into p_email_type_table
from ms_gen_email_config_detail
WHERE email_key = (
SELECT email_key
FROM ms_gen_email_config
WHERE metric_name = p_metric_name
AND action = p_action
and current_stage = p_current_stage
for i in p_email_type_table.first..p_email_type_table.last loop
dbms_output.put_line(p_email_type_table(i).subject||p_email_type_table(i).email_body||p_email_type_table(i).to_receipent||p_email_type_table(i).cc_receipent);
end loop;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END get_email_details;
END ms_gen_process_email;
but i am getting this error
Error(15,31): PLS-00201: identifier 'P_EMAIL_TYPE_TABLE' must be declared
Regards
DambyIf you need to call a procedure which has yet to be defined in your package, you can use forward declaration...
That means that you declare the procedure/function before the place it's going to be called (typically people do this at the top of the package) without providing a body for the code...
PACKAGE BODY ms_gen_process_email as
PROCEDURE get_email_details
p_metric_name IN VARCHAR2,
p_current_stage IN VARCHAR2,
P_ACTION in varchar2,
p_email_type_table out email_type_table
); -- Forward declaration of get_email_details procedure
procedure process_email_master(
p_metric_name IN VARCHAR2,
p_current_stage in varchar2,
p_action in varchar2,
p_pid in number,
p_object_id in varchar2
as
begin
null;
EXCEPTION
WHEN OTHERS
then
null;
end process_email_master;
PROCEDURE get_email_details
p_metric_name IN VARCHAR2,
p_current_stage IN VARCHAR2,
P_ACTION in varchar2,
p_email_type_table out email_type_table
) as -
Call a custom procedure in release 2
How do I call a custom procedure as an HTML form action. I am using release 2. I have a proceudre in my table that runs an update statement when I submit the form. I can't get the form to properly call the procedure. Anyone Know.
Thanks
Calwhy don't you create a dynamic page & just call that custom procedure inside.
as you know your dynamic page will give you url to call from HTML forms action.
/pls/portal/.......
vikas -
Can we call a stored procedure in a select statement
Hi All
I want to call a stored procedure inside a select statement is this possible.
Regards
SravzYou can create a pipelined function which gathers the data from your stored procedure and then use that in a select statement or directly write your script in any function or pipelined function. ;)
There is no way you can call any stored procedure in a SELECT statement directly - i guess.
Regards.
Satyaki De. -
Display invalid pattern name while calling the procedure inside the package
Hi ,
I'am trying to call a package which is having procedure ,from JDBC in which one of the return type is Varray from the procedure.When i'am calling the procedure inside the package
from java showing invalid name pattern name.Just i'am placing the code snippet for package and calling java through package.
Package body
create or replace package body Rewards_Summary_Package as
PROCEDURE Rewards_Summary_Procedure
(v_Tot_Earned_Points OUT NUMBER, v_TOT_REDEEMED OUT NUMBER, v_TOT_PTS_EXP OUT NUMBER,
v_TOT_AVAILABLE OUT NUMBER, v_TIER_NAME OUT VARCHAR2,VA OUT t_varray,V_PR_CON_ID IN VARCHAR2) AS
v_ACCRUALED_VAL NUMBER := 0;
v_USED_VAL NUMBER := 0;
/*v_TOT_ACCRUALED_VAL NUMBER := 0;
v_TOT_USED_VAL NUMBER := 0;
V_PR_TIER_ID VARCHAR2(30);
V_PR_CON_ID VARCHAR2(30);
V_EXPIRY_DT DATE;
v_month varchar2(30);
v_date date;
v_next_month_date date;
v_TIER_NAME VARCHAR2(50);
v_TOT_AVAILABLE NUMBER := 0;
v_EARNED NUMBER := 0;
v_TOT_EARNED NUMBER := 0;
v_TOT_REDEEMED NUMBER := 0;
v_TOT_EXPIRED NUMBER := 0;
v_EARNED_TOTAL NUMBER := 0;
v_TOT_EXPIRED_MONTH NUMBER := 0;
v_TOT_PTS_EXP NUMBER := 0;
v_TOT_RDMD_CANCELLED NUMBER :=0;
v_TOT_EARNED_POINTS NUMBER :=0;*/
v_FIRST_DT DATE;
v_LAST_DT DATE;
v_MEMBER_ID VARCHAR2(30);
V_EXPIRED_VAL Number;
v_TOT_PRDPTS_RDMD NUMBER := 0;
v_TOT_PTS_RDMD NUMBER := 0;
v_CAN_ACCRUAL_POINTS NUMBER := 0;
BEGIN
/*TotalRwdPoints and Tier Name*/
SELECT TR.NAME,MEM.POINT_TYPE_A_VAL,MEM.ROW_ID INTO v_TIER_NAME,v_TOT_AVAILABLE,v_MEMBER_ID
FROM SIEBEL.S_LOY_MEMBER MEM, SIEBEL.S_LOY_TIER TR WHERE MEM.PR_DOM_TIER_ID=TR.ROW_ID
AND MEM.PR_CON_ID=V_PR_CON_ID;
vTotPrdPtsRdmd
SELECT NVL(SUM(A.VALUE),0) INTO v_TOT_PRDPTS_RDMD from SIEBEL.S_LOY_RDM_ITM A,SIEBEL.S_LOY_ATTRDEFN B
WHERE A.MEMBER_ID = v_MEMBER_ID AND A.ATTRB_DEFN_ID = B.ROW_ID AND b.INTERNAL_NAME = 'Point 1 Value' AND A.TYPE_CD='Product'
AND A.TXN_ID IS NOT NULL;
vTotPtsRdmd
SELECT NVL(SUM(A.VALUE),0) INTO v_TOT_PTS_RDMD from SIEBEL.S_LOY_RDM_ITM A,SIEBEL.S_LOY_ATTRDEFN B
WHERE A.MEMBER_ID = v_MEMBER_ID AND A.ATTRB_DEFN_ID = B.ROW_ID AND b.INTERNAL_NAME = 'Point 1 Value' AND (A.TYPE_CD='Product' or A.TYPE_CD='Transfer')
AND A.TXN_ID IS NOT NULL;
vTotRewardPtExp
SELECT NVL(SUM(A.VALUE),0) INTO v_TOT_PTS_EXP FROM SIEBEL.S_LOY_RDM_ITM A,SIEBEL.S_LOY_ATTRDEFN B
WHERE A.MEMBER_ID = v_MEMBER_ID AND A.ATTRB_DEFN_ID = B.ROW_ID AND b.INTERNAL_NAME = 'Point 1 Value' AND A.TYPE_CD='Expired'
AND a.TXN_ID IS NULL;
vCanAccrualPoints
SELECT NVL(SUM(A.ACCRUALED_VALUE),0) INTO v_CAN_ACCRUAL_POINTS from SIEBEL.S_LOY_ACRL_ITM A,SIEBEL.S_LOY_ATTRDEFN B
WHERE A.MEMBER_ID = v_MEMBER_ID AND A.ATTRIB_DEFN_ID = B.ROW_ID AND b.INTERNAL_NAME = 'Point 1 Value' AND A.TYPE_CD='Cancellation';
v_Tot_Earned_Points := v_TOT_AVAILABLE+v_TOT_PRDPTS_RDMD+v_TOT_PTS_EXP-v_CAN_ACCRUAL_POINTS;
v_TOT_REDEEMED := v_TOT_PTS_RDMD-v_CAN_ACCRUAL_POINTS;
DBMS_OUTPUT.PUT_LINE(' Total Earned: '|| v_Tot_Earned_Points || ' Total Redeemed: '|| v_TOT_REDEEMED || ' Total Expired: '|| v_TOT_PTS_EXP
|| ' Balance Points: '|| v_TOT_AVAILABLE || ' Tier Name: '|| v_TIER_NAME);
select trunc(sysdate,'MONTH') INTO v_FIRST_DT from dual;
va:= t_varray(Null,Null,Null,Null,Null,Null);
FOR a in 1 .. 6 LOOP
select trunc(last_day(v_FIRST_DT)) INTO v_LAST_DT from dual;
SELECT SUM(AI.ACCRUALED_VALUE),SUM(AI.USED_VALUE) INTO v_ACCRUALED_VAL,v_USED_VAL from SIEBEL.S_LOY_ACRL_ITM AI,SIEBEL.S_LOY_ATTRDEFN A
WHERE AI.MEMBER_ID = v_MEMBER_ID AND A.ROW_ID = AI.ATTRIB_DEFN_ID AND A.INTERNAL_NAME = 'Point 1 Value'
AND trunc(AI.EXPIRATION_DT) >= v_FIRST_DT AND trunc(AI.EXPIRATION_DT) <= v_LAST_DT;
V_EXPIRED_VAL := NVL(v_ACCRUALED_VAL-v_USED_VAL,0);
va(a):=V_EXPIRED_VAL;
v_FIRST_DT := add_months(v_FIRST_DT,1);
End loop;
END;
end;
Package declaration
create or replace package Rewards_Summary_Package as
TYPE t_varray IS VARRAY(6) OF NUMBER;
PROCEDURE Rewards_Summary_Procedure
(v_Tot_Earned_Points OUT NUMBER, v_TOT_REDEEMED OUT NUMBER, v_TOT_PTS_EXP OUT NUMBER,
v_TOT_AVAILABLE OUT NUMBER, v_TIER_NAME OUT VARCHAR2,VA OUT t_varray,V_PR_CON_ID IN VARCHAR2);
end;
java code
I had tried using java types and Oracle types
conn=SiebelServiceDatasource.getConnection(SSBConstants.REWARDS_PROP_LOG_SUFIX);
// ArrayDescriptor.TYPE_VARRAY
ocstmt=(OracleCallableStatement)conn.prepareCall(" {call REWARDS_SUMMARY_PACKAGE.REWARDS_SUMMARY_PROCEDURE(?,?,?,?,?,?,?)}");
//ocstmt=(OracleCallableStatement)conn.prepareCall(" call Test_Array(?,?)");
ocstmt.registerOutParameter(1,OracleTypes.INTEGER);
ocstmt.registerOutParameter(2,OracleTypes.INTEGER);//1-616BH
ocstmt.registerOutParameter(3,OracleTypes.INTEGER);
ocstmt.registerOutParameter(4,OracleTypes.INTEGER);
ocstmt.registerOutParameter(5,OracleTypes.VARCHAR);
ocstmt.registerOutParameter(6,OracleTypes.ARRAY,"SIEBEL.T_VARRAY");
ocstmt.setString(7,contactSiebelRowId);
ocstmt.execute();
Showing the following invalid name pattern SIEBEL.T_VARRAY
Please help
Thanks in advance
Kirancreate or replace package Rewards_Summary_Package as
TYPE t_varray IS VARRAY(6) OF NUMBER;
end;You've declared your type inside the package. You need to declare it as a SQL type, which is not part of a PL/SQL package. -
Calling stored procedure inside AM. DB connection and updates on act/passiv
Hi Experts,
Currently in my application we have view objects and also we have some stored procedure calls to insert and update data (in the procedure we don't commit it. Due to the volume and complexity we couldn't migrate all the procedures). After the stored procedure call we do refresh the VO (Also in the EO we have checked necessary attributes to refresh on update and insert) to pick up the changes that happened in the stored procedure call. It is working fine and i can be able to see the updated values in the VO after the procedure call. However
Now my question is what will happen on activation and passivation? In the passivation the pinned DB connection is released and used for another AM. Will the stored changes will be rolled back. I mean the DB transaction. If rollback then the VO updates based on the procedure call will be also rolled back? I have tested this behaviour after disabled the AM pooling and set the pool size to 1. It is working but failing some times (In the procedure i have data insert for the child table, after the refresh i could be able to see the child VOs, some times empty child). Did anyone try this approach before?
Also what will happen if AM goes to passivation during the stored procedure executing ( i am getting the DB connection from getDBTransaction(() method). When i was testing i got the resultset null and i checked the stack and it was due to the connection closed). If AM behaves it like that is it reliable to use procedure call inside the AM?
Looking forward you expertise answers.
ThanksHi,
I agree with Frank.
In our application we always commit after calling PL/SQL procedures which performs DML-Statements (insert, update, delete).
Without commits you will - beside the passivation problem - face problems with locked records in the database.
To refresh the values from DB we use the "restore current row after rollback" approach (which is applicable for commit too).
regards
Peter -
Can you call a procedure inside another procedure and how many?
Ok. I have 3 procedures. I would like to call 2 of the from inside one, but I would like them to be in order.
So,
procedure1 // this is in db1
call procedure2
this collects, and inserts data into table 2 from db1
this must be run first
call procedure3
this update the table1, and table2 from db2, and db3
this must be run second
finish procedure1
this also updates table1 and table2 from db1 and db3
this must be run third
procedure1 end;or should I call a function
procedures 2, and 3 have there own dblinks to other dbs to gather datat, procedure1 is in the same db.
the procedures dont have to be like above. If you want to run proc3, and call proc1, and proc2 first so be it. Just an examplecreate or replace myPackage
is
procedure1;
procedure2;
procedure3;
end myPackage;
create or replace myPackage body
is
procedure1 is
begin
-- call 2
procedure2;
-- call 3
procedure3;
end procedure1;
procedure2 is
begin
do_something_here;
end procedure2;
procedure3 is
begin
do_something_here;
end procedure3;
end myPackage;
/* now run the procedure1 from sql*plus */
execute myPackage.Procedure1;Message was edited by:
Sven W. added packaged call -
Call Stored Procedure inside a db trigger
Is that possible to call stored procedure inside a db trigger ?
I User this code:
Create Or Replace Trigger Sale.Send_Auto_Email_Trg
After Insert
On Sale.Sale_Technical_Support
--Referencing New As New Old As Old
For Each Row
Declare
Pragma Autonomous_Transaction;
vn_count Number := 0;
vn_msg Number;
vv_exec Varchar2(5000);
Begin
If Inserting And :New.Ticket_Status = 2 Then
Begin
Begin
Select Count(*)
Into vn_count
From Sale_Technical_Support
Where Sending_Flag = 1
And Support_Type = 2;
Exception When No_Data_Found Then
vn_count := 0;
End;
If vn_count >= 1 And :New.Problem_Desc Is Not Null Then
Technical_Support_Mailing('[email protected]', -- To
'[email protected]',
'[email protected]', -- Bcc
'[email protected]', -- From
'رموز وصلاحيات',
2);
End If;
End;
End If;
End;
/No errors but the procedure doesn't executed !!!!!1) If you are using autonomous transactions for anything other that writing log data that you want to preserve even if the triggering transaction fails, you're probably doing something wrong. There is no reason to use an autonomous transaction here.
2) You don't want to send email from a trigger. You don't want to do anything non-transactional in a trigger. Oracle will, for example, rollback and re-execute parts of a statement for write consistency. If you send email in a trigger, you may get multiple emails for a single update. You may also get emails for updates that were never committed. And if the email server happens to be down, your transactions will fail.
3) If you use an autonomous transaction, the trigger will have a completely different transaction context from the parent. So when you query the table within the trigger, you won't be able to see any of the uncommitted changes including the changes that caused the trigger to fire. My guess is that you are assuming that the row that you inserted is visible to the trigger.
Justin -
To call Java Procedure inside Forms6i
How do i call a java procedure (Stored either in Oracle8i database or application server )from Oracle Forms6i trigger / procedure.If this possible please let me know.
Your help in this regard would be appreciatedFor java procedures in the database (stored java procedures) you just call the pl/sql wrapper function that was created for the java function.
To call java functions on the application server you can use the java importer utility available with forms6i patch2 and above. -
ORA-06502 when calling from a procedure
HI,
I have a procedure(p1) inside a package that queries a table and send out the result based on the input paramater value. OUT variable is of same type as the table column(using %type), column size is varchar2(4000). This procedure is called from another procedure(p2) and sends out the result to Java Page to display the results at front-end.
Problem is when application runs and p1 is called I get the following error message,
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Length/size of the character string queried from table is _1747_ that is within the limit of 4000 chars. If I limit the output to just 500 using substr, I don't get any error but adding a single character startes throwing error. OUT variable in both p1 and p2 are declared as table.column%type and error comes from p1 only as confirmed by the error log.
When I call p1 or p2 from a declare block, I don't get any error.
This has really confused me and I am not able to find any reason for this difference in behaviour.
Request to help me in understanding what could be the issue here.
Oracle version used is Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit
-Thanks in Advance.CREATE or replace PROCEDURE p1
( l_id IN VARCHAR2
, l_str OUT VARCHAR2
) IS
l_temp VARCHAR2(4000);
BEGIN
SELECT Response_Message INTO l_temp FROM t1 WHERE Response_ID = l_id;
l_str := l_temp||'10 symbols';
END;
CREATE or replace PROCEDURE p2
( l_id IN VARCHAR2
, l_str OUT VARCHAR2
) IS
BEGIN
p1(l_id, l_str);
END;
/no errors in procedures, but
DECLARE
resultstr VARCHAR2(1000);
BEGIN
p2(58, resultstr);
DBMS_OUTPUT.PUT_LINE(resultstr);
END;
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "P1", line 8
ORA-06512: at "P2", line 6
ORA-06512: at line 4Procedure is called with small variable.
Try check all calls and all procedures for size and check if there are string concatenations. -
Error while calling a stored procedure using SQLJ
I am calling a stored procedure defined inside a package through a SQLJ script. The first parameter of that procedure is a IN OUT parameter which is used as a ROWID for creating a cursor. That ROWID value is the same for every record in the table, thereby enabling us to create a cursor.
When I give a hard-coded value as a parameter, I get an error stating that the assignment is not correct as the query is expecting a variable and not a literal. Hence I removed the hard-coded value and included a dymanic value in the SQLJ call.
String strVal = "A";
#sql{CALL ASSIGNMENTS_PKG.INSERT_ROW :{strVal},'SALARY_CODE_GROUP','BU',3,105,sysdate,1,sysdate,1,1)};
Here "ASSIGNMENTS_PKG" is a package name and INSERT_ROW is the procedure.
When the SQLJ program is run, I get an error stating:
"PLS-00201: identifier 'A' must be declared"
I read the error message, but I am not able to understand where I need to give the GRANT permission to.If you're using Oracle Provider for OLE DB (OraOLEDB) to execute this stored procedure, you need to set PLSQLRSet attribute. This attribute can be set in registry, connection string, or command object. Please refer to User Documentation for more information.
-
Calling a Stored Procedure with output parameters from Query Templates
This is same problem which Shalaka Khandekar logged earlier. This new thread gives the complete description about our problem. Please go through this problem and suggest us a feasible solution.
We encountered a problem while calling a stored procedure from MII Query Template as follows-
1. Stored Procedure is defined in a package. Procedure takes the below inputs and outputs.
a) Input1 - CLOB
b) Input2 - CLOB
c) Input3 - CLOB
d) Output1 - CLOB
e) Output2 - CLOB
f) Output3 - Varchar2
2. There are two ways to get the output back.
a) Using a Stored Procedure by declaring necessary OUT parameters.
b) Using a Function which returns a single value.
3. Consider we are using method 2-a. To call a Stored Procedure with OUT parameters from the Query Template we need to declare variables of
corresponding types and pass them to the Stored Procedure along with the necessary input parameters.
4. This method is not a solution to get output because we cannot declare variables of some type(CLOB, Varchar2) in Query Template.
5. Even though we are successful (step 4) in declaring the OUT variables in Query Template and passed it successfully to the procedure, but our procedure contains outputs which are of type CLOB. It means we are going to get data which is more than VARCHAR2 length which query template cannot return(Limit is 32767
characters)
6. So the method 2-a is ruled out.
7. Now consider method 2-b. Function returns only one value, but we have 3 different OUT values. Assume that we have appended them using a separator. This value is going to be more than 32767 characters which is again a problem with the query template(refer to point 5). So option 2-b is also ruled out.
Apart from above mentioned methods there is a work around. It is to create a temporary table in the database with above 3 OUT parameters along with a session specific column. We insert the output which we got from the procedure to the temporary table and use it further. As soon the usage of the data is completed we delete the current session specific data. So indirectly we call the table as a Session Table. This solution increases unnecessary load on the database.
Thanks in Advance.
RajeshRajesh,
please check if this following proposal could serve you.
Define the Query with mode FixedQueryWithOutput. In the package define a ref cursor as IN OUT parameter. To get your 3 values back, open the cursor in your procedure like "Select val1, val2, val3 from dual". Then the values should get into your query.
Here is an example how this could be defined.
Package:
type return_cur IS ref CURSOR;
Procedure:
PROCEDURE myProc(myReturnCur IN OUT return_cur) ...
OPEN myReturnCur FOR SELECT val1, val2, val3 FROM dual;
Query:
DECLARE
MYRETURNCUR myPackage.return_cur;
BEGIN
myPackage.myProc(
MYRETURNCUR => ?
END;
Good luck.
Michael -
Problem with JDBC results calling simple stored procedure in VC 7.0
Hi all,
I am building a simple VC model which calls a stored procedure on a JDBC database. I have created the system in the portal, defined the alias and user mapping, the connection test is fine and the VC "find data" lists my bespoke stored procedure.
The stored procedure is :
CREATE PROCEDURE dbo.dt_getBieUsers
AS
select * from dbo.emailuserlink
GO
When I test it using query analyser, it returns 3 records each with the two fields I expect - user and email address.
I drag the model onto the workspace in VC and create an input form ( with just a submit button ). i drag the result port out to create a table. This has no fields in it.
I build and deploy as flex and the app runs, I click the submit button and SUCCESS! I get 3 records in my table each with 2 fields. The data is all correct. The problem with this is the fields are determined at runtime it seems.
I go back to the table and add 2 columns "email" and "address".
i build and deploy and run the app. Again I get 3 records, but this time the contents of all of the rows is not data, but "email" and "address". The data has been replaced by the header texts in all of the rows.
Can anyone help? Why isn't the data being put in my columns as I would expect?
I tried to build and deploy the app as Web Dynpro rather than Flex to see if it was a bug in Flex. The application starts but when I click the submit button to run the JDBC stored procedure I get a 500 Internal Server Error
com.sap.tc.wd4vc.intapi.info.exception.WD4VCRuntimeException: No configuration is defined for the entry JDBCFunction
at com.sap.tc.wd4vc.xglengine.XGLEngine.createComponentInternal(XGLEngine.java:559)
at com.sap.tc.wd4vc.xglengine.XGLEngine.getCompInstanceFromUsage(XGLEngine.java:362)
at com.sap.tc.wd4vc.xglengine.XGLEngine.getCompInstance(XGLEngine.java:329)
at com.sap.tc.wd4vc.xglengine.wdp.InternalXGLEngine.getCompInstance(InternalXGLEngine.java:167)
at com.sap.tc.wd4vc.xglengine.XGLEngineInterface.getCompInstance(XGLEngineInterface.java:165)
The JDBC connection I am using has a connection URL of jdbc:sap:sqlserver://localhost;DatabaseName=BIEUSERS
and a driver class of com.sap.portals.jdbc.sqlserver.SQLServerDriver
Can anyone solve my wierd problems?
Cheers
RichardHi Richard,
After you drag and drop the data service, right click on it and choose "Test data service". Then click on "Execute" and after you see the result on the right, click on "Add fields" button (inside the same window). Now you'll see that the fields are on the tabel. This is required only for JDBC data services, since this data (how the resultset is built) is not know in DT and it needs to be run firest - then analysed and only then you have to add the fields to the table).
Regards,
Natty
Maybe you are looking for
-
Endnotes for multiple files in book
I have reviewed several of the posts about endnotes and now am not sure which method to follow. I have a book file with more than 70 files. Each of these files [a chapter] has endnotes which are to appear all at the end in one chapter called en
-
Wireless needs to be reset after every restart
Hi all, I'm running 10.2.8, and use a Lucent waveLAN/ieee card with the Sourceforge drivers (WirelessDriverBeta5); they do a good job of connecting me to my wireless network. My one complaint is that every time I restart my Powerbook and want to go o
-
Tracks mysteriously re-ordering themselves
Hi, I've notice recently that tracks on my IPod sporadically re-order themselves. For example, tracks 1-3 of a given album will appear as the final three tracks of that album on the Ipod. I can confirm that this happens AFTER they've been put onto th
-
Is it possible to stop broadcasting BTopenzone
Hi everyone so i got one of these old school hubs http://postimage.org/image/q3a36w14l/ And im broadcasting Btopenzone is there anyway to disable this. I had 30 people connect to me about a week ago all from Iphones shows up when i log into my Hub th
-
Since Prelude doesn't work with Red footage, how can I add logging info to a file in Premiere Pro CS6?