How to execute a mapping in sql plus?
hi,
OWB generate a package code from the mapping, for example if I have a package named map1, what is the request to execute ,in SQL
PLUS, map1.main() which is the function main of this package?
Thank you
Hi
There is a MAIN procedure you can use, if you have no mapping input parameters defined it will be like;
PROCEDURE Main(p_status OUT VARCHAR2,
p_max_no_of_errors IN VARCHAR2 DEFAULT NULL,
p_commit_frequency IN VARCHAR2 DEFAULT NULL,
p_operating_mode IN VARCHAR2 DEFAULT NULL,
p_bulk_size IN VARCHAR2 DEFAULT NULL,
p_audit_level IN VARCHAR2 DEFAULT NULL,
p_purge_group IN VARCHAR2 DEFAULT NULL,
p_job_audit IN VARCHAR2 DEFAULT 'TRUE');
If you define mapping input parameters they will also be included in the signature of this procedure.
See this post here for some details;
http://blogs.oracle.com/warehousebuilder/2008/11/using_3rd_party_schedulers_with_owb_1.html
Cheers
David
Similar Messages
-
How to invoke multiple sessions of sql*plus thru pl/sql program
Hi
How to invoke multiple sessions of sql*plus thru pl/sql program.
ThanksHow to invoke sql*plus in a procedure?????
I have to invoke more pl/sql sessions?????No you don't "have to".
Look at what you are trying to do.
You have a program running inside the PL/SQL engine. This is running nicely inside the Oracle database and is perfectly capable of issuing other SQL statements, PL/SQL programs etc. inside it's nice cosy Oracle environment.
You are asking for this PL/SQL to shell out to the operating system, run an external application, for which it will have to supply a username and password (are you planning on hard coding those into your PL/SQL?), and then that external application is supposed to run more SQL or PL/SQL against the database.
a) Why hold all this code external to the database when it can quite happily reside on the database itself and be executed through jobs or whatever.
b) Consider what would happen if someone were to replace the external application with their own program of the same file name... they'd be able to capture the username and password for connecting to the database, therefore a major security flaw.
The whole idea of doing what you want through external calls to SQL*Plus is ridiculous. -
Execute (or re-execute) commands in the SQL*Plus buffer
I feel confused about sql plus / command. by defination, it Execute (or re-execute) commands in the SQL*Plus buffer. how do I know whether it execete or re-execute a command?
for example, I run a select statement, seems I have to type / to get result. when I run a create table statement, it seems run twice with / and I got table exists error.
Could someone clearify when should / be used and when not to use it.jz2 wrote:
I feel confused about sql plus / command. by defination, it Execute (or re-execute) commands in the SQL*Plus buffer. how do I know whether it execete or re-execute a command?
for example, I run a select statement, seems I have to type / to get result. when I run a create table statement, it seems run twice with / and I got table exists error.
Could someone clearify when should / be used and when not to use it.I guess you are looking at things in the other way round. The / does what it says, it executes the command in the buffer. Don't think it "reexecutes". It simply executes the command. Be it already run or for the first time. For example,
Running the code for 1st time.
SQL> begin
2 dbms_output.put_line('hi');
3 end;
4 .
SQL> set serveroutput on
SQL> /
hi
PL/SQL procedure successfully completed.
Running again....
SQL> l
1 begin
2 dbms_output.put_line('hi');
3* end;
SQL> /
hi
PL/SQL procedure successfully completed.
SQL>So / simply executes. Now when you should use it and when not, that depends upon the kind of command you are trying to execute. Like you mentioned, for a select, it works by again giving the output. But for a DDL, its not the / which gives error but its the very nature of DDL that once issued, its committed so surely enough , next execution would throw an error only.
HTH
Aman.... -
How to retreive this file in SQL*Plus
If I upload files which name is KOREAN, name of files is invisible.
I dont't know cause of this problem.
How is keeping korean name of file from breaking?
Also, answer how to retreive this file in SQL*Plus
Thanks
silverbellTo access ifs data from SQL, you need to (officially) setup a 'user view'. Refer to the Java API documentation on how to do this. Once you have created the user view, then you may access this view using any SQL tool.
-
How to Generate Trace Files in SQL*Plus
Hi Friends ,
How to Generate Trace Files in SQL*Plus ?
i have no idea
thanks
rajWhat trace files would you like to generate?
Are we talking SQL trace files?
ALTER SESSION SET sql_trace = TRUE;This will be generated in the user_dump_dest on the server.
show parameter dump -
How to find session information in sql plus
Can someone please tell me how to find session information in sql plus? I specifically want to know my privileges for the current session. Thanks in advance.
SELECT * FROM session_privs;
SELECT * FROM session_roles; -
ERRORs executing CWM commands in SQL Plus
Hi,
I tried to execute following command in SQL Plus:
execute cwm_olap_dimension.set_plural_name('olapdata', 'OLAP_APARAT_DIM', 'OLAP_APARAT_DIM');
And in response I got following result:
BEGIN cwm_olap_dimension.set_plural_name('olapdata', 'OLAP_APARAT_DIM', 'OLAP_APARAT_DIM'); END;
ERROR at line 1:
ORA-06510: PL/SQL: unhandled user-defined exception
ORA-06512: at "OLAPSYS.CWM$UTIL", line 535
ORA-06512: at "OLAPSYS.CWM$OLAP$DIMENSION", line 17
ORA-06512: at line 1
Can anyone explane me what am i doing wrong ?
I would really appreciate any help!
Thankscheck SQL*Plus user's guide
e.g column REMARK format a30
set linesize 2243
etc etc etc -
How to execute a mapping based on an event
Hi
I am on OWB 10.2.0.3. and Oracle 10.2.0.2. I have a mapping which is fine, deploys well, I can execute using the control manager.
I also created a schedule module in OWB, created a schedule for a specific date and time and also an interval, configured the mapping to this schedule. The mapping gets executed successfully at the scheduled time.
The requirement is this mapping needs to be executed by an external process (oracle but a different application in a different machine). The team owning this process is ready to insert a record in a table. Which I want to sense and execute this mapping.
I already have created a procedure so that this mapping can also be run from pl/sql. I can create an after-insert trigger in this table so call this procedure, but that will make the whole think synchronous and the external process will have to wait for this mapping to complete to proceed further which is not acceptable by them.
Is there a way I can check for the record in this table and exec the mapping from OWB?
Can somebody please help and provide me pointers how I can schedule a mapping based on an event (insertion of the record) without (preferably) or with Oracle Workflow.
Thanks a lot in advance!
MaruthiThanks Detlef,
The problem I have is the trigger will make it actually synchronous with the process that inserts the record in the table.
Even if I define the trigger as AUTONOMIUS_TRANSACTION, both the process will not parellel. setting this I can have commits and rollbacks in triggers but they will be synchronous. I want this mapping to run asynchronously so that the main process inserts the record and continues with the rest of the process while the mapping can be executed independently.
For this reason I am looking for something which will allow me to do this without a trigger on the table.
As mentioned in your refereed post, I can use CDC, but not sure how good is CDC and will this be an overkill to implement and use CDC for this purpose. Any simpler solution available?
Any inputs please?
Thanks once again!
Regards,
Maruthi -
How to run multiple scripts in sql*plus?
I would like to run 2 scripts in sql*plus, how do I do this? I tried the following, but it won't run.
create table student_new
AS
select *
from student
insert into student_new
(last_name, first_name
values
(Crop, Jenny)
The above are the two scripts I want to run, what am I doing wrong.
ThanksDo you have a solution to run multiple scripts continuosly, one after the other as one script.
Say I have file1.sql file2.sql, file3.sql.
I want to create a script run.sql, where this will run file1.sql,file2.sql,file3.sql one after other without any one running one after the other like follows:
run.sql should have
begin
@file1.sql
@file2.sql
@file3.sql
dbms_output.put_line(select sysdate from dual);
end;
If I run run.sql all the three scripts should be executed successfully and then display the current time . All these files have update statements(50,000 updates each file).
Very urgetn. Can some one hlpe, please.
Thanks in advance. -
How to return a value from sql plus activity
Hi,
I want to return a value from sqlplus activity to a processflow variable.
SQL PLUS activity has a property :"RESULT_CODE", whenever i run the process flow this value is always reurned as 0.
in sqlplus activity i have written some pl/sql block....
for example
begin
end;
exit
i want to do something like
begin
if v=100 then
return 1
else
return 0;
end if;
end;
exit
can some please tell me how can i return value from this pl/sql block to proessflow.
Regards,
RD_RBStable ==> function
input param from table to function. ==> input mapping paramter to store the output from the mapping.
Will this now work. -
How to control logic flow in SQL Plus script
Hi
I have the requirement below:
Before I start running an SQL script, I need to ensure that I am connecting as a particular user. If I am not that user, then the script should show a msg "Error - Invalid User - Log in as <<username>>"
Let's say i am executing a script A.sql.
SQL > @<path>a.sql
But before this script is executed -- i shall check for the user:
block begins...
select user into var1 from dual
if upper(var1) != 'ABCUSER' then
-- display the error message and stop execution of this script
else
@<path>a.sql (*it executes what i want :) )
end if;
block ends...
How do I write this code using an SQL script ? Pls suggesHi,
As Centinul said, SQL*Plus is poorly equipped to deal with problems like this. If possible, try to do what you want outside of SQL*Plus.
If you really have to do it in SQL*Plus, here are two ideas:
(1) run a script conditionally
(2) deliberately raise an error
(1) Using SQL*Plus substitution variables, you can decide which of several scripts to run as a sub-script, based on the results of some query.
For example, if a.sql is the script that only user ABCUSER is allowed to run, then write two other very short scripts:
(a) warning.sql, such as the following:
-- warning.sql
PROMPT You are not authorized to do this.
QUIT(b) step_1.sql, which decides whether a.sql or warning.sql should be run, and does it:
-- step_1.sql - Decide whether a.sql or warning.sql is to be run next, and do it.
-- (a) decide:
COLUMN script_name_col NEW_VALUE script_name
SELECT CASE
WHEN USER = 'ABCUSER'
THEN 'a.sql'
ELSE 'warning.sql'
END AS script_name_col
FROM dual;
-- do:
@&script_nameYou may want to use @@, or specify a complete path name.
(2) Deliberately raise an error, either in a separate script or in a.sql itself, like this:
WHENEVER SQLERROR EXIT
SELECT CASE
WHEN USER = 'ABCUSER'
THEN NULL
ELSE TO_NUMBER ('This will raise ORA-01722')
END AS "Welcome!"
FROM dual;
WHENEVER SQLERROR NONE
-- continue with the original a.sql -
How to execute a mapping or workflow in a job?
hi all:
I want to write a procedure use pl/sql,
and how to execute mapping or workflow in procedure ?
then I write a job use script ,the job schedule execute
procedure.
please give me a sample.Hi,
You can write a procedure something on these lines -
CREATE OR REPLACE PROCEDURE Test_Proc(p_task_name IN VARCHAR2, p_task_type IN VARCHAR2, p_loc IN VARCHAR2 ) AS
lv_rt_code NUMBER(1) DEFAULT 0;
lv_repo VARCHAR2(64) DEFAULT NULL;
lv_loc VARCHAR2(64) DEFAULT 'LOC_EDW_PROCESS_FLOWS';
lv_task_type VARCHAR2(64) DEFAULT 'PROCESS';
lv_task_name VARCHAR2(64) DEFAULT 'ETL_FIXED_RATE';
lv_sys_par VARCHAR2(64) DEFAULT ',';
lv_cust_par VARCHAR2(64) DEFAULT ',';
lv_oem NUMBER(1) DEFAULT 0;
lv_fnc_call VARCHAR2(4000) DEFAULT NULL;
BEGIN
IF ( p_task_name IS NOT NULL AND p_task_type IS NOT NULL AND p_loc IS NOT NULL) THEN
lv_task_name := p_task_name;
lv_task_type := p_task_type;
lv_loc := p_loc;
END IF;
SELECT Wb_Rt_Platform_Repository INTO lv_repo FROM dual;
lv_fnc_call := 'BEGIN '
||':lv_rt_code'
|| ' := '
|| lv_repo
||'.fnc_exec_owb_process(p_repos_owner => :lv_repo'
||', p_location_name => :lv_loc'
||', p_task_type => :lv_task_type'
||', p_task_name => :lv_task_name'
||', p_system_params => :lv_sys_par'
||', p_custom_params => :lv_cust_par'
||', p_oem_friendly => :lv_oem'
||'); END;'
--dbms_output.put_line(lv_fnc_call);
EXECUTE IMMEDIATE lv_fnc_call USING OUT lv_rt_code, IN lv_repo, lv_loc, lv_task_type, lv_task_name, lv_sys_par, lv_cust_par, lv_oem;
DBMS_OUTPUT.PUT_LINE('RETURN CODE IS '|| lv_rt_code);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SUBSTR(SQLERRM,1,255) );
END;
and use DBMS_JOB to schedule the above.
HOpe this helps.
Thanks
Mahesh -
How to get Arabic dates in SQL*Plus?
I want to do a very simple thing.
I want to type in Arabic and Display dates in Arabic.
Instead i get ????? ??????? ????? ??????? ? ? ???????, ????? for this?
Why is this?
I then changed my Windows XP "Regional and Language Options" all to Arabic. Now, I get AR (Arabic) in my language selection bar at the bottom of the Desktop. When I choose AR I can type Arabic in Notepad. ُ
Even HERE I can type in Arabic: فغحث غخعق ةثسسشلث اثقث
But in Sql*PLus I get ????? ??????? ????? ??????? ? ? ???????, ?????
If I choose AR in SQL Plus and type in Arabic I get garbage characters?
How to get Arabic in Sql*Plus?
SQL> SHOW USER
USER is "ARABDTEST"
SQL> SELECT * FROM v$version;
BANNER
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
SQL> SELECT * FROM nls_session_parameters;
PARAMETER VALUE
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
17 rows selected.
SQL> ALTER SESSION set NLS_DATE_LANGUAGE = 'ARABIC';
Session altered.
SQL> SELECT TO_CHAR(SYSDATE, 'RRRR/MM/DD YEAR MONTH DAY MON DY AM PM DL') FROM dual;
TO_CHAR(SYSDATE,'RRRR/MM/DDYEARMONTHDAYMONDYAMPMDL')
2013/04/08 TWENTY THIRTEEN ????? ??????? ????? ??????? ? ? ???????, ????? 08, 2013
SQL> ALTER SESSION set NLS_DATE_LANGUAGE = 'AMERICAN';
Session altered.
SQL> SELECT TO_CHAR(SYSDATE, 'RRRR/MM/DD YEAR MONTH DAY MON DY AM PM DL') FROM dual;
TO_CHAR(SYSDATE,'RRRR/MM/DDYEARMONTHDAYMONDYAMPMDL')
2013/04/08 TWENTY THIRTEEN APRIL MONDAY APR MON PM PM Monday, April 08, 2013
SQL> SELECT * FROM nls_database_parameters;
PARAMETER VALUE
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET WE8MSWIN1252
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.1.0.6.0
20 rows selected.I am not sure SQL*Plus in character mode can display Arabic characters on Windows. OTN NLS_LANG FAQ http://www.oracle.com/technetwork/products/globalization/nls-lang-099431.html#_Toc105389288 says:
>
if you are testing with "special" characters please DO use the GUI and not the "DOS box" sqlplus.exe !
>
SQL*Plus GUI is not available with 11G: you should use SQL Developer. -
How to detect client OS from SQL*Plus script
Sometimes in a SQL*Plus script I need to execute OS commands e.g.
host rm tempfile.bufHowever of course Windows has no "rm" command by default, so I have to edit the script to use
host del tempfile.bufNow if I could define &DELETE (for example, "cat"/"type" is another) as a substitution variable, I could just use
host &DELETE tempfile.bufMaybe I need more coffee but all I could come up with was something like this:
def rm=rm
def cat=cat
spool sqlplus_windows_defs.cmd
prompt echo def rm=del
prompt echo def cat=type
spool off
host .\sqlplus_windows_defs > sqlplus_windows_defs.sql
@sqlplus_windows_defs.sql
host &rm sqlplus_windows_defs.cmd
host &rm sqlplus_windows_defs.sqlthe idea being that you first define the variables for nix ("rm" and "cat"), then attempt to create and execute a Windows command file containing DOS versions ("dele" and "type"), which does not run under nix. Unfortunately the OS failure message (".sqlplus_windows_defs: not found" in Unix) appears on the screen despite SET TERM OFF, so I'm back where I started.
I know there are various ways to get the server OS, and you can get the SQL*Plus version with &_SQLPLUS_RELEASE and so on, but I can't see a way to determine the client OS. Any suggestions?Thanks guys. This seems to work in Windows XP - will try on Unix when I get a chance:
col DELETE_COMMAND new_value DELETE_COMMAND
col LIST_COMMAND new_value LIST_COMMAND
def list_command = TYPE
def delete_command = DEL
SELECT DECODE(os,'MSWIN','TYPE','cat') AS list_command
, DECODE(os,'MSWIN','DEL','rm') AS delete_command
FROM ( SELECT CASE WHEN UPPER(program) LIKE '%.EXE' THEN 'MSWIN' END AS os
FROM v$session
WHERE audsid = SYS_CONTEXT('userenv','sessionid') );
host &LIST_COMMAND xplan_errors.lst
host &DELETE_COMMAND xplan_errors.lstIf the user doesn't have access to v$session it will just default to the Windows commands.
http://www.williamrobertson.net/code/xplan.sql -
How to cancel a search in SQL*Plus
Once a search is initiated in SQL*Plus Worksheet, how can you stop it? I am on Windows NT. The normal Ctrl-C, Ctrl-Break, Esc don't work. I found an obscure reference in the SQL*Plus documentation about a cancel function, but it didn't give the keystrokes.
I actually managed to crash an 8.0.5 database by hitting Ctrl-C in the middle of a query.
Oracle Support advised me that this was a known bug. The solution?
Don't hit Ctrl-C in the middle of a query!
null
Maybe you are looking for
-
How to setup a company code for material management
Hi, While creating material in MM01, in sales org tab, when I gave plant XXXX, it is giving an error "Company code YYYY is not setup for material management". So can you help me , how to setup a company code for material management Help is appreciate
-
Visio 2013 Drawing pages do not open
Hi, I have a .vsdx file with 13 pages - there are two modified stencils in it. when the drawing opens it opens these two modified stencils first then opens the main drawing with the pages. Now the drawing opens to the first stencil and does not open
-
Hi I have a partitioned table with 1000 million records with avg 20 million records in each partition and I want to update the entire table. The way I am updating the table is for e.g. UPDATE /*+ PARALLEL(A,8) BKG_FAC A SET A.BKG_FLAG = DECODE(A.BKG_
-
Beans On A Web Page - Linking via custom events
I've written a pair of Beans and I need to link them up on a web page to run in IE. Have tested in the BDK BeanBox and they work OK there. Unfortunately they don't in IE. Hope someone out there can help. (Environment: IE6 on Win2000, Java Plug-In 1.3
-
Jmf video capture in an Applet
Hello I use netBeans 6.9.1 and would like to use JMF and the webcam capture JMF function in my applet but Iget a no permission error see below How can I get out of that? Thank you Fred Public class SourceCam extends java.applet.Applet implements Runn