Sync Band Cursor in "Channel Table"
Hi,
I’m using diadem to playback my data, including “AI Signal”, “DI Signal”, “Serial Port Data”.
For “AI” and “DI” Signal I can choose the “Display Type-2D Axis System”.
For “Serial Port” the data is in string format, e.g. AA BB AC EF…… I choose “Display Type-Channel Table”
My question is when I use the band cursor to see the detail curve information in “2D Axis System” , all the numeric channel can Zoom in/off together, while the “Serial Port” data is in the channel table, it’s not effected by the cursor, and I can’t get the exact/related "serial port data" in that time slot.
How can I sync the “Channel table” data with cursor?
Can I get the cursor start position and point it to the channel table, or make a SUDialog to display the data in band cursor range?
My application is: 1) Review the AI/DI, Serial Data; 2)Select the interested data pieces; 3) Export the interested data files for report or sth else.
Thanks and waiting for reply.
Xifeng
Hi Brad,
Thanks for your advice, I have written a script to solve this problem.
1. I use the property “DisplayObj.XBegin” and “DisplayObj.Xend” in “2D Axis System” to get the relative time information in curve page.
Dim X1, X2
X1=view.Sheets(1).ActiveArea.DisplayObj.XBegin
X2=view.Sheets(1).ActiveArea.DisplayObj.XEnd
2. Write a small function to compare X1,X2 with the timestamp in “Serial Port” to allocate the relate data position, then set it as the active cell in “channel table”.
call view.Sheets(2).ActiveArea.DisplayObj.SetActiveCell(AllocatePos,1)
(AllocatePos is the relate data position that I calculated)
3. I customized the tool bar to add a new button, when users click this button, I will execute the script
Call MenuItemAdd("View","7","MenuItem","Sync time info","ScriptStart(""C:\Sync Analot time info to Serial Port.VBS"")")
The solution is kind of awkward, but it did work......
Thanks again, and sorry for my late reply.
Best rergards
XIfeng
Similar Messages
-
To Use Cursor or TYPE table Index by PLS_integer
Hi All,
Let's see if I have table with no. of records 19,26,20,000.
If I want to loop through all the records which will be a optimized way To Use Cursor or TYPE table Index by PLS_integer.
Please guide.
Thanks.What is it you want to do to/with the rows you're looping through?
Ideally you want to avoid looping, as that's row by row (aka slow by slow) processing and it's expensive time-wise.
If you're doing DML (insert/update/delete) then you're best off doing it in one sql statement, rather than looping. -
Inserting values from a cursor to a table
Hi,
I need to insert the values from a cursor into a table,this i the part of code which trieds to do it...i get error stating "select stmt missing"...pls help out...
OPEN p_cursor for V_SQLSTATEMENT;
---for i in p_cursor
LOOP
FETCH p_cursor INTO v_cursor_type;
insert into TEMPCHARTVALUES(HOP,AMOUNT,EFFECTIVE_FROM,EFFECTIVE_TO,CURRENCY)
values (v_cursor_type.PMC1_HOP_CODE,
v_cursor_type.PMC1_Amount,
v_cursor_type.PMC1_EFFECTIVE_FROM,
v_cursor_type.PMC1_EFFECTIVE_UPTO,
v_cursor_type.PMC1_CURRENCY);
--dbms_output.put_line(v_cursor_type.KEYCODE1);
EXIT WHEN p_cursor%ROWCOUNT = v_REC_COUNT;
end loop;Hi, here it is..
create or replace
procedure prm_sp_charts_db (P_CURSOR OUT SYS_REFCURSOR,CHARTCode VARCHAR,tablename varchar)
IS
v_COUNT varchar2(200);
v_REC_COUNT NUMBER;
V_SQLSTATEMENT VARCHAR2(2000);
v_cursor_type TEMPCHARTVALUES%ROWTYPE;
begin
v_COUNT:='SELECT COUNT(*) FROM PRM_M_Chart_' || CHARTCode;
execute immediate v_COUNT into v_REC_COUNT;
V_SQLSTATEMENT := 'SELECT ';
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F1_CODE Keycode1,';
open P_CURSOR for select column_name from user_tab_columns where table_name=tablename and column_name='PMC' || CHARTCode || '_F2_CODE';
IF P_CURSOR%FOUND then
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F2_CODE Keycode2,';
else
V_SQLSTATEMENT := V_SQLSTATEMENT || '0,';
END IF;
open P_CURSOR for select column_name from user_tab_columns where table_name=tablename and column_name='PMC' || CHARTCode || '_F3_CODE';
IF P_CURSOR%FOUND then
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F3_CODE Keycode3,';
else
V_SQLSTATEMENT := V_SQLSTATEMENT || '0,';
END IF;
open P_CURSOR for select column_name from user_tab_columns where table_name=tablename and column_name='PMC' || CHARTCode || '_F4_CODE';
IF P_CURSOR%FOUND then
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F4_CODE Keycode4,';
else
V_SQLSTATEMENT := V_SQLSTATEMENT || '0,';
END IF;
open P_CURSOR for select column_name from user_tab_columns where table_name=tablename and column_name='PMC' || CHARTCode || '_F5_CODE';
IF P_CURSOR%FOUND then
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F5_CODE Keycode5,';
else
V_SQLSTATEMENT := V_SQLSTATEMENT || '0,';
END IF;
--open P_CURSOR for select column_name from user_tab_columns where table_name=tablename and column_name='PMC' || CHARTCode || '_F6_CODE';
IF P_CURSOR%FOUND then
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F6_CODE Keycode6,';
else
V_SQLSTATEMENT := V_SQLSTATEMENT || '0,';
END IF;
--open P_CURSOR for select column_name from user_tab_columns where table_name=tablename and column_name='PMC' || CHARTCode || '_F7_CODE';
IF P_CURSOR%FOUND then
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F7_CODE Keycode7,';
else
V_SQLSTATEMENT := V_SQLSTATEMENT || '0,';
END IF;
--open P_CURSOR for select column_name from user_tab_columns where table_name=tablename and column_name='PMC' || CHARTCode || '_F8_CODE';
IF P_CURSOR%FOUND then
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F8_CODE Keycode8,';
else
V_SQLSTATEMENT := V_SQLSTATEMENT || '0,';
END IF;
--open P_CURSOR for select column_name from user_tab_columns where table_name=tablename and column_name='PMC' || CHARTCode || '_F9_CODE';
IF P_CURSOR%FOUND then
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F9_CODE Keycode9,';
else
V_SQLSTATEMENT := V_SQLSTATEMENT || '0,';
END IF;
--open P_CURSOR for select column_name from user_tab_columns where table_name=tablename and column_name='PMC' || CHARTCode || '_F10_CODE';
IF P_CURSOR%FOUND then
V_SQLSTATEMENT := V_SQLSTATEMENT || 'PMC' || CHARTCode || '_F10_CODE Keycode10,';
else
V_SQLSTATEMENT := V_SQLSTATEMENT || '0,';
END IF;
V_SQLSTATEMENT := V_SQLSTATEMENT ||'PMC' || CHARTCode || '_HOP_CODE HOPCode,PMC' || CHARTCode || '_AMOUNT ,PMC'|| CHARTCode || '_EFFECTIVE_FROM Effective_From,PMC' || CHARTCode || '_EFFECTIVE_UPTO Effective_Upto,PMC' || CHARTCode || '_CURRENCY Currency FROM PRM_M_CHART_' || CHARTCode ;
DBMS_OUTPUT.PUT_LINE(V_SQLSTATEMENT);
OPEN p_cursor for V_SQLSTATEMENT;
---for i in p_cursor
LOOP
FETCH p_cursor INTO v_cursor_type;
insert into TEMPCHARTVALUES(HOP,AMOUNT,EFFECTIVE_FROM,EFFECTIVE_TO,CURRENCY)
values (v_cursor_type.PMC1_HOP_CODE,
v_cursor_type.PMC1_Amount,
v_cursor_type.PMC1_EFFECTIVE_FROM,
v_cursor_type.PMC1_EFFECTIVE_UPTO,
v_cursor_type.PMC1_CURRENCY);
--dbms_output.put_line(v_cursor_type.KEYCODE1);
EXIT WHEN p_cursor%ROWCOUNT = v_REC_COUNT;
end loop;
end prm_sp_charts_db; -
How can I make that the cursor of a table ...
Hello,
how can I make that the cursor of a table (on the frontpanel) go to the starting position? I have placed a table that give back the number of the row if I doubleclick a row on the frontpanel, but when I restart the vi the cursor of the table is on this position. If I have many informations in the table and after restarting there are just one or two, I can`t see this information without scrolling to the top of the table. I want that the cursor (that I see) is at the first row. How can I make it?
thankyou
SchwedeHello,
Sorry, I forgot to attach it in the previous post.
Regards,
Paulo
Attachments:
EditPos.vi 16 KB -
In channel table view Rows Ch name as column
while viewing data as channel table how to view the rows in the column field & the columns in the row field
Hi aparab,
You can do that in REPORT but not in VIEW.
Brad Turpin
DIAdem Product Support Engineer
National Instruments -
Can't insert recors fetched by cursor in the table
HI
i am fetching records from my table total_budget.All the fetched records are displayed in a tabular data block(data block name is forecast_result).Now i want to insert these record fetched by cursor in my table forecast_resul which is empty.how can i do it.I am sending the code if any one can help............
When i execute this code it give me error unable to insert(FRM-40508) .I have carefully checked table columns names and their data types.All r fine but i dont know y it is not working.Here is the code
DECLARE
cursor c1 IS
SELECT ministry_id,fiscal_year ,t_amount
FROM total_budget
WHERE ministry_id=:global.var11 AND (fiscal_year BETWEEN :syear and :eyear);
BEGIN
T_XSUMX := 0;
OPEN C1;
X:=1;
SUMX := 0; SUMY := 0; SUMXY:=0; SUMX2 := 0;
go_block('forecast_result');
first_record;
LOOP
FETCH C1 INTO Y1,Y2,Y;
EXIT WHEN C1%NOTFOUND;
SUMY := SUMY +Y;
XY := X*Y;
X2 := X*X;
SUMX := SUMX + X;
SUMXY := SUMXY + XY;
SUMX2 := SUMX2 + X2;
:forecast_result.ministry_id:=Y1;
:forecast_result.fiscal_year:=Y2;
:forecast_result.t_amount:=Y;
NEXT_RECORD;
X := X + 1;
END LOOP;
close C1;
z:=X-2;
X_BAR := z;
X := z+1;
T_XSUMX := X * SUMX;
T_SUMY := SUMY * SUMX;
T_SUMX := SUMX * SUMX;
T_SUMXY := SUMXY * X;
T_SUMX2 := SUMX2 * X;
R1 := T_SUMY - T_SUMXY;
R2 := T_SUMX - T_SUMX2;
B := ROUND(R1/R2,1);
A := ROUND((T_SUMXY -(T_SUMX2*B))/T_XSUMX,1);
Y_BAR := A+(B*X_BAR);
:forecast_result.ministry_id:=Y1;
:forecast_result.fiscal_year:=Y2;
:forecast_result.t_amount:=Y_BAR;
next_record;
insert into forecast_result
values(:forecast_result.ministry_id,:forecast_result.fiscal_year,:forecast_result.t_amount);
commit;
END;
Can anyone tell me wat i am doing wrong
looking for instant reply
nidaHi alma,
Plz u dnt wrt babytalk rr SMS-language -> mi! Becoz mi don lejk dat.
I suppose that your data block "forecast_result" are based on the table of the same name. Otherwise this may be the cause of some of your trouble.
Your code would properly work better like this:
DECLARE
X NUMBER(38);
SUMX NUMBER(38);
SUMY NUMBER(38);
Y NUMBER(38) ;
Y1 varchar2(10);
Y2 varchar2(10);
X2 NUMBER(38);
XY NUMBER(38);
SUMXY NUMBER(38);
SUMX2 NUMBER(38);
X_BAR NUMBER(38);
Y_BAR NUMBER(38);
T_SUMY NUMBER(38);
T_SUMX NUMBER(38);
T_SUMXY NUMBER(38);
T_SUMX2 NUMBER(38);
T_XSUMX NUMBER(38);
R1 NUMBER(38);
R2 NUMBER(38);
A NUMBER(38);
z number(38);
B NUMBER(38);
final number(38);
-- Just curious, where does :syear and :eyear come from ??
cursor c1 IS
SELECT ministry_id, fiscal_year, t_amount
FROM total_budget
WHERE ministry_id=:global.var11
AND (fiscal_year BETWEEN :syear and :eyear);
BEGIN
T_XSUMX := 0;
X:=1;
SUMX := 0;
SUMY := 0;
SUMXY:=0;
SUMX2 := 0;
go_block('forecast_result');
-- If you're making this dynamically, then clear the block to start with.
clear_block(NO_COMMIT);
first_record;
OPEN C1;
LOOP
FETCH C1 INTO Y1, Y2, Y;
EXIT WHEN C1%NOTFOUND;
SUMY := SUMY + Y;
XY := X*Y;
X2 := X*X;
SUMX := SUMX + X;
SUMXY := SUMXY + XY;
SUMX2 := SUMX2 + X2;
:forecast_result.ministry_id := Y1;
:forecast_result.fiscal_year := Y2;
:forecast_result.t_amount := Y;
-- NO, this will not work. You have to CREATE the record. You only get the
-- first record for "free". Next_Record moves to allready existing records.
-- NEXT_RECORD;
Create_Record;
X := X + 1;
END LOOP;
close C1;
z := X - 2;
X_BAR := z;
X := z + 1;
T_XSUMX := X * SUMX;
T_SUMY := SUMY * SUMX;
T_SUMX := SUMX * SUMX;
T_SUMXY := SUMXY * X;
T_SUMX2 := SUMX2 * X;
R1 := T_SUMY - T_SUMXY;
R2 := T_SUMX - T_SUMX2;
B := ROUND(R1/R2,1);
A := ROUND((T_SUMXY -(T_SUMX2*B))/T_XSUMX,1);
Y_BAR := A+(B*X_BAR);
-- What are you doing here ?? This is weird. The population of the records are done in
-- the loop ! You don't have to add anything here.
-- :forecast_result.ministry_id:=Y1;
-- :forecast_result.fiscal_year:=Y2;
-- :forecast_result.t_amount:=Y_BAR;
-- Since your data block (hopefully) are based on the table of the same name, you DON'T
-- need to do this. You just have to press the commit button (or F10 or the floppy disk
-- icon or what-ever).
-- insert into forecast_result
-- values(:forecast_result.ministry_id,:forecast_result.fiscal_year,:forecast_result.t_amount);
-- commit;
END; -
Can we create cursor using the table created dynamically
Dear all,
Can we create the cursor using the table which is created dynamically using "Execute immediate" within the same procedure,
or is there any way to call the table created dynamically ..
please Do Help me in this
thanks alot
Edited by: khaja on Jan 18, 2009 10:57 AMWell, I don't think this approach is bad in any possible circumstances. It depends on the requirements we don't know. Yes, usually applications should not be designed in this way. But 'usually' does not mean 'never'. One possible case is described in Oracle's example Referencing Database Objects that Do Not Exist at Compilation. It's possible to assume that tables inv_01_2003, inv_04_2003, etc from the referenced topic What Is Dynamic SQL? are generated automatically by some job using dynamic create table stmt. If the OP has similar requirements tnen this approach is not bad. It may not be the best one but it at least is not so bad as you said.
I believe that OPs know their requirements much better than me. This is why I always try to answer the exact question. If the approach is really ugly then I don't answer such questions at all.
Regards,
Dima
Message was edited by:
DimaCit -
Joining a ref cursor to a table
Dear all;
Can you please show me a simple example on how to join a ref cursor to a table because I have a function that returns a ref cursor and I would like to call that function in another function(function B) and then join it to a table in that function(function B)user13328581 wrote:
well, I personnally know it is a bad idea but my fellow senior keeps advicing me to do it. Their reason is based on the code reusability aspect of things. I had a function 1 already created which returned a ref cursor and basically within that function is a complex select statement. Now I have function 2 which is making use of a similar select statement, the only different between the two select statment is based on the fact, the function 2 select statement is joining to another table at the very end, so based on their argument they want me to call that select statement from function 1 and join it to that table instead...Then your "+seniors+" need to extract their heads from whatever dark orifice they have it stuck in, as this is not how '"+code reusability+" works in the Oracle environment.
In the SQL language, views are used to create re-usable SQL source code.
In Oracle, the Shared Pool is used to create and store cursors for reuse (assuming the SQL source allows reusability and uses bind variables).
Joining a ref cursor (code) with a table (data) is just plain stupid - and no amount of "code reusability" arguing will change this fact. -
Virtual Channel Table (Logic Channel Number) in DCM9900
Hello everybody,
I would like to configure the DCM9900 (v. 10.0.02) in order to arrange the position where every channel will be tuned in our STB customers. I've read the manual and it seems that VCT (or LCN in some networks / literature) is not compatible under the DVB standard.
Is there any way to configure VCT / LCN in DCM9900? Why is it compatible/configurable under ATSC and not in DVB networks?
(Cable)VCT is very useful for TV network operators as we can configure the position of every TV channel tuned in the customer Set Top Box.
Could someone gime me some help ? Maybe it's necessary to have ROSA system installed to configure DCM (don't have it).
Best regards,
Inaki
Virtual Channel Table (VCT)
The CVCT (Cable VCT) and TVCT (Terrestrial VCT) provide information for all virtual channels in a transport stream like: major and minor channel numbers, short channel name, and information for navigation and tuning.You don't need to call this function, but your specific driver does. That function is a utility function provided by the IVI engine that allows the specific driver to register all of it's channels with the engine. The engine can then use this information to track per-channel attributes, etc. All of this should happen behind the scenes. You only need to be concerned with it unless you are actually developing a specific driver yourself.
This is different from the virtual channel name mapping in MAX. That mapping allows you to create aliased names for pre-existing channels. In your case, the IVI engine doesn't think that you have any channels (because apparently none were registered).
You might try using a different specific driver temporarily just to ma
ke sure that everything else is working as you'd expect. -
OCI doc says Cursor and Nested table have the same bind type SQLT_RSET but they don't
5 Binding and Defining in OCI
PL/SQL REF CURSORs and Nested Tables in OCI
says SQLT_RSET is passed for the dty parameter.
If I use SQLT_RSET for the return value of a function that returns a table and pass a statement handle's address for the OCI parameter data pointer, I expected that the statement handle will be instantiated as a result of executing the function on which I can further perform fetch, similar to a cursor. But it throws exception PLS-00382: expression is of wrong type ORA-06550: line 2, column 3. Is the above documentation wrong?
From the OCI header file I see that for varray and nested table it mentions to use SQLT_NCO. I could find no example in the OCI documentation on how to pass or receive as return value a nested value when using SQLT_NCO.
Please help before I shoot myself.So the Nested table I quoted in the doc is not actually used to mean a table type below?
create type t_resultsetdata as object (
i int, d decimal, c varchar(10)
create type t_nested_resultsetdata as table of t_resultsetdata;
create function Blah return t_nested_resultsetdata is . . .
For this you are saying to use SQL_NTY and not SQL_NCO. Can you tell where this usage is documented, because ocidfn.h says
#define SQLT_NTY 108
/* named object type */
#define SQLT_NCO 122
/* named collection type (varray or nested table) */
Another question - Because of the original document I said I followed, I thought I could treat cursor and nested table similarly in the calling application, i.e. I could repeatedly do a fetch on the OCIStmt* which will be bound for nested table. Now from what you say I understand I can't really bind a OCIStmt* for nested table but have an object type. That means it will get all the data of that collection in one go, right? LIke I said, lack of examples is making this tough. I don't want to look into OCI source code, as that will be too much. -
Parameterized cursor for varient Table name?
Hi all,
I am using Oracle 9i and have a cursor defined as :-
Code:
CREATE PROCEDURE Proc_Abc
AS
CURSOR
My_Cursor (UserName VARCHAR) IS
SELECT Emp_Name, Salary FROM Employee_Table
WHERE User_Name = UserName;
(Rest of the code)
This code is working perfectly, but if I try to provide the table name through the cursor variable, it gives an error
Below is the code that I am writing to pass table name through variable:-
Code:
CREATE PROCEDURE Proc_Abc
AS
CURSOR
My_Cursor (TableName VARCHAR, UserName VARCHAR) IS
SELECT Emp_Name, Salary FROM TableName
WHERE User_Name = UserName;
(Rest of the code)
All the tables that I need to pass through cursor variables have the same fields and are all pre known to me, thats why "SELECT Emp_Name, Salary " is remaining common throughout.
Please suggest how can I make a cursor with variant tables?
Thanks in advance.The following procedure compares between two tables and then it picking the column from all_tab_column table and finally execute the SELECT statement to compare the data between this two table. But, you can proceed your program taking help from this -
satyaki>ed
Wrote file afiedt.buf
1 create or replace procedure compr_tab_dat(TAR_TAB IN VARCHAR2,
2 TAR_UID IN VARCHAR2,
3 SRC_TAB IN VARCHAR2,
4 SRC_UID IN VARCHAR2)
5 is
6 cursor c1
7 is
8 select column_name
9 from (
10 select column_name,column_id
11 from all_tab_columns
12 where table_name = SRC_TAB
13 and owner = SRC_UID
14 intersect
15 select column_name,column_id
16 from all_tab_columns
17 where table_name = TAR_TAB
18 and owner = TAR_UID
19 )
20 order by column_id;
21 cursor c_count
22 is
23 select count(column_name) as c_cnt
24 from (
25 select column_name
26 from all_tab_columns
27 where table_name = SRC_TAB
28 and owner = SRC_UID
29 intersect
30 select column_name
31 from all_tab_columns
32 where table_name = TAR_TAB
33 and owner = TAR_UID
34 );
35 rec1 c1%rowtype;
36 rec2 c1%rowtype;
37 rec3 c1%rowtype;
38 rec6 c_count%rowtype;
39 cnt number(10);
40 cnt1 number(10);
41 str varchar2(32000);
42 --str clob;
43 BEGIN
44 cnt := 0;
45 cnt1 := 1;
46 dbms_output.enable(10000000);
47 for rec6 in c_count
48 loop
49 cnt := rec6.c_cnt;
50 end loop;
51 if cnt = 0 then
52 dbms_output.put_line('No matched columns found.... ');
53 else
54 dbms_output.put_line('UnMatched Datas Are-- ');
55 str:='declare '||
56 ' cursor c3 '||
57 ' is '||
58 ' select ';
59 open c1;
60 loop
61 fetch c1 into rec1;
62 exit when c1%notfound;
63 if cnt = cnt1 then
64 str:= str||rec1.column_name;
65 elsif cnt1<cnt then
66 str:= str||rec1.column_name||',';
67 end if;
68 cnt1 := cnt1 + 1;
69 end loop;
70 close c1;
71 str:=str||' from '||SRC_TAB||
72 ' minus '||
73 ' select ';
74 cnt1:=1;
75 open c1;
76 loop
77 fetch c1 into rec2;
78 exit when c1%notfound;
79 if cnt = cnt1 then
80 str:= str||rec2.column_name;
81 elsif cnt1<cnt then
82 str:= str||rec2.column_name||',';
83 end if;
84 cnt1 := cnt1 + 1;
85 end loop;
86 close c1;
87 str:=str||' from '||TAR_TAB||';'||
88 ' r3 c3%rowtype; '||
89 ' begin '||
90 ' for r3 in c3 '||
91 ' loop '||
92 ' dbms_output.put_line(';
93 cnt1:=1;
94 open c1;
95 loop
96 fetch c1 into rec3;
97 exit when c1%notfound;
98 if cnt = cnt1 then
99 str:= str||' r3.'||rec3.column_name;
100 elsif cnt1<cnt then
101 str:= str||' r3.'||rec3.column_name||
102 '||'',''||';
103 cnt1 := cnt1 + 1;
104 end if;
105 end loop;
106 close c1;
107 str:=str||');'||
108 ' end loop;'||
109 ' exception '||
110 ' when others then '||
111 ' dbms_output.put_line(sqlerrm); '||
112 ' end; ';
113 end if;
114 execute immediate(str);
115 --dbms_output.put_line(str);
116 exception
117 when others then
118 dbms_output.put_line(sqlerrm);
119* END;
120 /
Procedure created.
satyaki>
satyaki>
satyaki>
satyaki>create table emp_t
2 as
3 select * from emp
4 where rownum < 5;
Table created.
satyaki>
satyaki>
satyaki>desc emp;
Name Null? Type
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
satyaki>
satyaki>
satyaki>desc emp_t;
Name Null? Type
EMPNO NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
satyaki>set lin 1000
satyaki>
satyaki>select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
14 rows selected.
satyaki>
satyaki>
satyaki>select * from emp_t;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
satyaki>
satyaki>
satyaki>set serveroutput on
satyaki>
satyaki>
satyaki>begin
2 compr_tab_dat('EMP_T','SCOTT','EMP','SCOTT');
3 end;
4 /
No matched columns found....
ORA-06535: statement string in EXECUTE IMMEDIATE is NULL or 0 length
PL/SQL procedure successfully completed.
satyaki>
satyaki>
satyaki>sho user;
USER is "TRG2"
satyaki>
satyaki>
satyaki>
satyaki>
satyaki>begin
2 compr_tab_dat('EMP_T','TRG2','EMP','TRG2');
3 end;
4 /
5 .
satyaki>
satyaki>ed
Wrote file afiedt.buf
1 begin
2 compr_tab_dat('EMP_T','TRG2','EMP','TRG2');
3* end;
satyaki>/
UnMatched Datas Are--
7654,MARTIN,SALESMAN,7698,28-SEP-81,1250,1400,30
7698,BLAKE,MANAGER,7839,01-MAY-81,2850,,30
7782,CLARK,MANAGER,7839,09-JUN-81,2450,,10
7788,SCOTT,ANALYST,7566,19-APR-87,3000,,20
7839,KING,PRESIDENT,,17-NOV-81,5000,,10
7844,TURNER,SALESMAN,7698,08-SEP-81,1500,0,30
7876,ADAMS,CLERK,7788,23-MAY-87,1100,,20
7900,JAMES,CLERK,7698,03-DEC-81,950,,30
7902,FORD,ANALYST,7566,03-DEC-81,3000,,20
7934,MILLER,CLERK,7782,23-JAN-82,1300,,10
PL/SQL procedure successfully completed.N.B.: May be Any other member can come with much shorter or better technique than this one. But, according to your requirement - i'm posting it. Hope this will help you, or atleast give you some idea.
Regards.
Satyaki De. -
Set cursor position within table control while scrolling
hi,
Anybody can guide me how to set the cursor with in table control while scrolling down,normally it is going to first input filed.
Thanks and Regards,
palani.Hi Palani,
Could you please share with me what all you have done regarding get and set cursor. I am facing similar problem where
I have made a Z Table Control where i have given vertical and horizontal scrolling . Now when I scroll and try to select a row, then ZTABLE_CONTROL-CURRENT_LINE fetches line number not from the top, it fetches from the current top of ztablecontrol.
It is onlyy changing the value on scrolling, if i do not scroll table control then value is coming correct.
My requirement is whenever i select any row of ZTABLE CONTROL i need to get the curent line number from top. Please guide me what should i do.
Early reply will be rewarded.
Thanks. -
Need help about ref cursor using like table
Hi Guys...
I am devloping package function And i need help about cursor
One of my function return sys_refcursor. And the return cursor need to be
join another table in database . I don't have to fetch all rows in cursor
All i need to join ref cursor and another table in sql clause
like below
select a.aa , b.cc form ( ref_cursor ) A, table B
where A.dd = B.dd
I appeciate it in advanceMy understanding is that you have a function that returns a refcursor and is called by a java app.
Because this is a commonly used bit of code, you also want to reuse this cursor in other bits of sql and so you want to include it like table in a bit of sql and join that refcursor to other tables.
It's not as easy as you might hope but you can probably achieve this with pipelined functions.
Is it a direction that code should be going down? yes, eventually. I like the idea of pulling commonly used bits of code into a SQL statement especially into the WITH section, provided it could be used efficiently by the CBO.
Is it worth the effort given what you have to do currently to implement it? possibly not.
what else could you do? construct the sql statement independently of the thing that used it and reuse that sql statement rather than the refcursor it returns?
Message was edited by:
dombrooks -
Hi all
The question is in the title i.e. is it possible to add cursor in the 2d table report ? A customer asked me this question, and till now i wasn't able to find a good answer. I didn't find any property to do this, and i think this could be a great funtion.
Thanks for your future answer !Hi KaBooOoom,
Well, we're getting closer, but I'm still not convinced I really know what you want. If you want to display in a REPORT table a certain row range from the data channel values, that is NOT starting at the first value and NOT ending at the last value, then you can already accomplish this by setting the start and end row to display in the table configuration dialog under the "Scaling" tab.
If you want t do this based on vertical cursors you drag around in a VIEW graph, then this can be accomplished by copying the flagged region betwee the cursors into new data channels and linking to these new data channels in your REPORT table.
Finally, if you see what you want already in VIEW, you can transfer the VIEW layout into a new REPORT layout with the "Transfer to REPORT" icon at the top of the VIEW panel.
Brad Turpin
DIAdem Product Support Engineer
National Instruments -
FOR LOOP cursor that updates table A based on a value in table B
Hi,
I need a FOR LOOP cursor that scans and updates all pro-rata column in table EMPLOYEE(child) based on what pay classification all employees are on in the CLASSIFICATION(parent) table.
DECLARE
BEGIN
IF employee.emp_type = 'FT' THEN
UPDATE employee
SET employee.pro_rata = ((classification.yearly_pay/52)*52)
WHERE employee.empid = v_empid AND classification.class_id = employee.class_id;
END IF;
IF employee.emp_type = 'PT1' THEN
UPDATE employee
SET employee.pro_rata = ((classification.yearly_pay/39)*52)
WHERE employee.empid = v_empid AND classification.class_id = employee.class_id;
END IF;
IF employee.emp_type = 'PT2' THEN
UPDATE employee
SET employee.pro_rata = ((classification.yearly_pay/21)*52)
WHERE employee.empid = v_empid AND classification.class_id = employee.class_id;
END IF;
END;
How do I create a cursor that cuts across these two table
See tables and data
CREATE TABLE CLASSIFICATION(
CLASS_ID VARCHAR2(6) NOT NULL,
CLASS_TYPE VARCHAR2(10),
DESCRIPTION VARCHAR2(30) NOT NULL,
YEARLY_PAY NUMBER(8),
HOURLY_RATE NUMBER,
WEEKDAY_OVER_TIME NUMBER,
WEEKEND_OVER_TIME NUMBER,
CONSTRAINT PK_CLASS_ID PRIMARY KEY (CLASS_ID));
INSERT INTO CLASSIFICATION VALUES('PR1','PERMANENT','MANAGER',45000,'','',NULL);
INSERT INTO CLASSIFICATION VALUES('PR2','PERMANENT','ADMIN ASSISTANT',22000,'',1.5,NULL);
INSERT INTO CLASSIFICATION VALUES('PR3','PERMANENT','CONTROLLER',32000,'',1.5,NULL);
INSERT INTO CLASSIFICATION VALUES('PR4','PERMANENT','CASH OFFICER',22000,'',1.5,NULL);
INSERT INTO CLASSIFICATION VALUES('PR5','PERMANENT','CLEANERS',16000,'',1.5,NULL);
INSERT INTO CLASSIFICATION VALUES('PR6','PERMANENT','ADMIN OFFICER',22000,'',1.5,NULL);
INSERT INTO CLASSIFICATION VALUES('PR7','PERMANENT','WAREHOUSE ATTENDANT',20000,'',1.5,NULL);
INSERT INTO CLASSIFICATION VALUES('PR8','PERMANENT','WINDOWS DRESSER',22000,'',1.5,NULL);
INSERT INTO CLASSIFICATION VALUES('PR9','PERMANENT','DIRECTOR',60000,'','',NULL);
INSERT INTO CLASSIFICATION VALUES('PR10','PERMANENT','DEPUTY DIRECTOR',52000,'','',NULL);
INSERT INTO CLASSIFICATION VALUES('PR11','PERMANENT','SALES ASSISTANT',21000,'',1.5,NULL);
INSERT INTO CLASSIFICATION VALUES('TEMP2','TEMP STAFF','ADMIN ASSISTANT','',16.50,'',NULL);
INSERT INTO CLASSIFICATION VALUES('TEMP3','TEMP STAFF','CONTROLLER','',29.00,'',NULL);
INSERT INTO CLASSIFICATION VALUES('TEMP4','TEMP STAFF','CASH OFFICER','',19.00,'',NULL);
INSERT INTO CLASSIFICATION VALUES('TEMP5','TEMP STAFF','CLEANERS','',10.00,'',NULL);
INSERT INTO CLASSIFICATION VALUES('TEMP6','TEMP STAFF','ADMIN OFFICER','',20.00,'',NULL);
INSERT INTO CLASSIFICATION VALUES('TEMP7','TEMP STAFF','WAREHOUSE ATTENDANT','',18.00,'',NULL);
INSERT INTO CLASSIFICATION VALUES('TEMP8','TEMP STAFF','WINDOWS DRESSER','',18.50,'',NULL);
INSERT INTO CLASSIFICATION VALUES('TEMP11','TEMP STAFF','SALES ASSISTANT','',16.00,'',NULL);
CREATE TABLE EMPLOYEE(
EMPID NUMBER(5) NOT NULL,
SURNAME VARCHAR2(30) NOT NULL,
FNAME VARCHAR2(30) NOT NULL,
GENDER CHAR(1) NOT NULL,
DOB DATE NOT NULL,
EMP_TYPE VARCHAR2(20) NOT NULL,
ANNUAL_WEEKS_REQD NUMBER(2),
PRO_RATA_WAGES NUMBER(7,2),
HOLIDAY_ENTLMENT NUMBER(2),
SICK_LEAVE_ENTLMENT NUMBER(2),
HIRE_DATE DATE NOT NULL,
END_DATE DATE,
ACCNO NUMBER(8) NOT NULL,
BANKNAME VARCHAR2(20) NOT NULL,
BRANCH VARCHAR2(20) NOT NULL,
ACCOUNTNAME VARCHAR2(20),
CLASS_ID VARCHAR2(6),
CONSTRAINT CK_HIRE_END CHECK (HIRE_DATE < END_DATE),
CONSTRAINT CK_HIRE_DOB CHECK (HIRE_DATE >= ADD_MONTHS(DOB, 12 * 18)),
CONSTRAINT CK_EMP_TYPE CHECK (EMP_TYPE IN ('FT','PT1','PT2','PT3','HOURLY')),
CONSTRAINT CK_EMP_GENDER CHECK (GENDER IN ('M','F')),
CONSTRAINT FK_EMP_CLASS FOREIGN KEY (CLASS_ID) REFERENCES CLASSIFICATION(CLASS_ID),
CONSTRAINT PK_EMP PRIMARY KEY (EMPID));
CREATE SEQUENCE SEQ_EMPID START WITH 1;
INSERT INTO EMPLOYEE VALUES(
SEQ_EMPID.NEXTVAL,'RICHARD','BRANDON','M','25-DEC-1966','FT',52,22000.00,28,14,'10-JAN-2005',NULL,90823227,'NATWEST','BROMLEY','DEPOSIT','PR2');
INSERT INTO EMPLOYEE VALUES(
SEQ_EMPID.NEXTVAL,'BOYCE','CODD','M','15-JAN-1972','PT1','','','','','12-JAN-2005',NULL,72444091,'LLOYDS','KENT','CURRENT','PR8');
INSERT INTO EMPLOYEE VALUES(
SEQ_EMPID.NEXTVAL,'ALHAJA','BROWN','F','20-MAY-1970','HOURLY','','','','','21-JUN-2000',NULL,09081900,'ABBEY','ESSEX','CURRENT','TEMP2');
INSERT INTO EMPLOYEE VALUES(
SEQ_EMPID.NEXTVAL,'RON','ATKINSON','M','10-AUG-1955','PT3','','','','','12-JAN-2005','26-MAR-2006',01009921,'HALIFAX','KENT','SAVINGS','PR6');
INSERT INTO EMPLOYEE VALUES(
SEQ_EMPID.NEXTVAL,'CHAMPI','KANE','F','01-JAN-1965','PT2','','','','','12-JAN-2004',NULL,98120989,'HSBC','ILFORD','CURRENT','PR4');
INSERT INTO EMPLOYEE VALUES(
SEQ_EMPID.NEXTVAL,'NED','VED','M','15-JAN-1980','HOURLY','','','','','29-DEC-2005',NULL,90812300,'WOOLWICH','LEWISHAM','CURRENT','TEMP6');
INSERT INTO EMPLOYEE VALUES(
SEQ_EMPID.NEXTVAL,'JILL','SANDER','F','22-MAR-1971','FT','','','','','30-NOV-2003',NULL,23230099,'BARCLAYS','PENGE','DEPOSIT','PR1');
Any contribution would be appreciated
many thanks
Cube60Hi,
I have triede this cursor procedure but I get an compilation error.
See first post for tables and data..
Can someone help me out please.
SQL> CREATE OR REPLACE PROCEDURE update_employee(
2 p_empid employee.empid%type,
3 p_emp_type employee.emp_type%type)
4 IS
5 CURSOR c1 is
6 select e.empid, e.emp_type, c.yearly_pay from employee e, classification c where
7 c.class_id = e.class_id;
8 BEGIN
9 OPEN c1
10 LOOP
11 FETCH c1 INTO p_empid, p_emp_type;
12 exit when c1%notfound;
13
14 IF v_emp_type ='PT1' THEN
15 UPDATE employee SET annual_weeks_reqd = 39, pro_rata_wages = ((v_yearly_pay/52)*39), holiday_en
tlment=21, sick_leave_entlment = 10.5 WHERE c.class_id = e.class_id;
16 END IF;
17 END;
18 /
Warning: Procedure created with compilation errors.
SQL> SHOW ERR;
Errors for PROCEDURE UPDATE_EMPLOYEE:
LINE/COL ERROR
10/1 PLS-00103: Encountered the symbol "LOOP" when expecting one of
the following:
. ( % ; for
The symbol "; was inserted before "LOOP" to continue.
Many thanks
Maybe you are looking for
-
Extracting resourse like .ai & png files from a flash project
Hi! I have been assined the task of extracting the images from old flash projects and am having a devil of a time doing so. There are lots of programs that you can extract info out of the swf files, but these don't give you the original .ai Ilustrato
-
Newbie: Toolbar Button QuickPrint works not in Browser
Hi all, does anybody know a solution for this: - wrote a javascript that adds a toolbar button with the following lines: app.addToolButton({ cName: "atbToolButton1", // oIcon: oIcon, cExec: "this.print({bUI
-
Hi All When Buyer can HOLD (button ) functionality . even we add sc item into the workarea sc is available for buyer forever . Why HOLD functionality is required for the BUYER. What is the SAP definition for thiS HOLD functionality in ****[pit work a
-
Error trying to import application and apex objects
Hi friends: I was using the Oracle Apex Demo Site to evaluated Oracle application Server. I was amazed with its functionality, so I decide to download and installed on my server. I want to continue evaluating the Apex functionallity and for that, I w
-
Hi, We're currently having the following requirement --> Client<--HTTPS-->OSB PS(Server1)<--HTTPS-->OSB BS(Server 2)<--HTTPS-->ExternalSystem This is a synchronous service. Unfortunately, I haven't worked on this requirement previously hence I have l