Returning values to PL/SQL from OLAP function
We've recently migrated our express application into Oracle 9i. We need to call a function and return the value back to a PL/SQL procedure. I thought that DBMS_AW.execute would work, but the documentation and the actual code seem to differ. The documentation leads me to believe that there are two parameters to the execute procedure, one being the DML command, and the other being the output from the DML command. When I attempt to compile, I get an error as the DB thinks that only one parameter should be specified. Has anyone written any pl/sql that returns the values of an OLAP function?
thanks in advance!
btw, we are on 9.2.0.4.1
Thank you for pointing me at this package. I've now tried it, but am seeing some 'odd' behaviour. I am using the packages as such:
lv_res := dbms_aw.eval_text('aw attach aw_ceis_imp;call f_comp_v');
when I review the results in lv_res, it echos the command that I sent 'aw attach aw_ceis_imp;call f_comp_v'. Are there any docs that show examples of using the dbms_aw.eval_text functions?
Similar Messages
-
How to exit from SQL*Plus based on the return value of a SQL select stment?
Hi
I have a SQL script executed from SQL*Plus. I would like to know if SQL*Plus
supports any kind of branching or exiting from script execution based on a
returned value of a SQL select statement. I am on 9i.
Regards,
Tamas Szecsyin sqlplus, you have whenever
ex:
whenever sqlerror exit failure
insert into ...
-- if this fails, then you will be out
insert into ...
-- if this fails, then you will be out
whenever sqlerror continue
insert into ...
-- if this fails, this continues
insert into ...and you have PL/SQL
declare x number;
begin
select count(*) into x from emp;
if (x=14) then null; end if;
end;
/note that you can mix those in some case
-- exit if there is no row in emp
whenever sqlerror exit 1
var dummy number
exec select count(*) into :dummy from emp having count(*)!=0 -
Unable to retreive the return value of pl/sql function using DB Adapter
Dear Experts,
I am using DB Adapter in my BPEL Process. Using DB Adapter I am invoking a PL / SQL function. I am able to send two input parameters for the pl/sql function. But I dont know how to retrieve the return value from the function. Please suggest me.
Thanks,
RajeshYes I am returning a value from PL/SQL function.
Please see the code segments below,
FUNCTION "TD_INSERT" (a TDINIT_TYPE, stops TDDETAIL_TABLE )
RETURN VARCHAR2
AS
td_no Number;
td_id Number;
stop TDDETAILFULL_TYPE;
length number;
BEGIN
insert into TD_INIT values( ----passing all the values here --------- );
select max(tdno) into td_no from TD_INIT ;
length := stops.count;
for i in 1.. length loop
stop := stops(i);
insert into TD_DETAIL_FULL values(
td_no, ------- );
end loop;
commit;
RETURN td_no;
END;
Thanks,
Rajesh -
Not able to return value for pl/sql to shell
Hi,
I'm calling pl/sql script from my shell script. Have set a flag in the pl/sql. Trying to return the value of the flag back to the shell script, but it is not working. My shell is ksh
Please help....
SHELL code trysnir.sh file--->
<code>
#!/bin/ksh
flaga=50
echo $flaga
flaga=`sqlplus -S user/pass@sid@/opt/local/sql/update.sql > LOGFILE`
echo aftersql
echo $flaga
if [ $flaga -lt 50 ]; then
error "Previous Load failed"
exit 3
fi
echo complete
</code>
SQL CODE file for update.sql--->
<code>
variable flaga number
declare
sessin_id number;
begin
Select Load_Sessin('aaa','xx') into sessin_id from dual;
if sessin_id is NULL then
:flaga :=10;
end if;
dbms_output.put_line(flaga);
end;
exit :flaga
</code>
But this returns me --->
+50+
aftersql
PL/SQL procedure successfully completed.
tyrnir.sh[9]: procedure: unknown test operator
complete
Please advise.... I have been trying since past 3 hrs and tried all search and everything i could but in vain.
Many Thanks....
Edited by: nss280 on Aug 20, 2009 2:17 AMexecuting this way will return you the last output from the sqlplus command. I think suppressing message PL/SQL procedure successfully completed. and putting a DBMS_OUTPUT.PUT_LINE(vflag) (this you have done already) will give you the desired result. So in update.sql put some extra line as below:
set feedback off
set serveroutput on
<your code goes here>
Regards. -
LiveCycle DS , can't get the return value of fill( arg) from Assembler class
Hi all!
I'm a have small problem , can any one help me? Please
I make a project which very similar to Product project(in
example).
1) Have Assembler class: I work correctly
package flex.samples.stock;
import java.util.List;
import java.util.Collection;
import java.util.Map;
import flex.data.DataSyncException;
import flex.data.assemblers.AbstractAssembler;
public class StockAssembler extends AbstractAssembler {
public Collection fill(List fillArgs) {
StockService service = new StockService();
System.out.print(fillArgs.size());
return service.getStocks();
public Object getItem(Map identity) {
StockService service = new StockService();
return service.getStock(((Integer)
identity.get("StockId")).intValue());
public void createItem(Object item) {
StockService service = new StockService();
service.create((Stock) item);
public void updateItem(Object newVersion, Object
prevVersion, List changes) {
StockService service = new StockService();
boolean success = service.update((Stock) newVersion);
if (!success) {
int stockId = ((Stock) newVersion).getStockId();
throw new DataSyncException(service.getStock(stockId),
changes);
public void deleteItem(Object item) {
StockService service = new StockService();
boolean success = service.delete((Stock) item);
if (!success) {
int stockId = ((Stock) item).getStockId();
throw new DataSyncException(service.getStock(stockId),
null);
some require class is ok.
2) I configure in data-management-config.xml
<destination id="stockinventory">
<adapter ref="java-dao" />
<properties>
<source>flex.samples.stock.StockAssembler</source>
<scope>application</scope>
<metadata>
<identity property="StockId"/>
</metadata>
<network>
<session-timeout>20</session-timeout>
<paging enabled="false" pageSize="10" />
<throttle-inbound policy="ERROR" max-frequency="500"/>
<throttle-outbound policy="REPLACE"
max-frequency="500"/>
</network>
</properties>
</destination>
3) My client app:
I use :
<mx:ArrayCollection id="stocks"/>
<mx:DataService id="ds" destination="stockinventory"/>
ds.fill(stocks); --> Problem here
When I run this app, The StockAssembler on the server work
correctly (i use printout to debug) . But variable stocks can't get
the return value,it is a empty list.
Please help me!Hi,
The executeQueryAsync method is “asynchronous, which means that the code will continue to be executed without waiting for the server to
respond”.
From the error message “The collection has not been initialized”, which suggests that the object in use hadn’t been initialized after the execution of the executeQueryAsync method.
I suggest you debug the code in browser to see which line of code will throw this error, then you can reorganize the logic of the code to avoid using the uninitialized object.
A documentation from MSDN about Using the F12 Developer Tools to Debug JavaScript Errors
for your reference:
http://msdn.microsoft.com/en-us/library/ie/gg699336(v=vs.85).aspx
Best regards
Patrick Liang
TechNet Community Support -
Can we return a Array of varchar2 from a function ?
Hello,
i have a sql query that returns some rows. I want to define that query inside a function and want to retrieve the results in an array .Finally i want to retrieve those values in array in my .NET runtime . How can i achieve this ?bootstrap wrote:
CREATE OR REPLACE function f_func(dept varchar2) return (what will be return type here ?)As Tubs said - ref cursor.
Any other choice is likely very wrong.
select statement...returning a resultset containing more than one rows..Cursors are not result sets. Cursors are not result sets. Repeat this over and over again.
A cursor is a program. The results from it is the output of the program. There is no so-called result set created in memory containing the output of that cursor.
The flaw in your approach is to fetch the output of this program, and storing it in very expensive server memory (called the PGA in Oracle) - for returning data as a primitive non-scalar data structure to the client.
Returning a ref cursor (aka a pointer to a cursor) means that you give the client direct access to the interface of that cursor program. Allowing the client to directly fetch and consume the output of that program. Enabling the client to deal with the standard SQL (cursor) interface.
A significantly more performant and scalable method than to create a primitive result set cache in server memory for the output and then shipping that (as a non-standard data structure) to a client.
A ref cursor interface can returns millions of rows and GBs of data. How many rows do you think this approach of yours will take? How many clients can call that same PL/SQL interface of yours at the same time, before the memory footprint of caching SQL data in the PGA for external clients exceeds free server memory?
Do you realise what happens next? Swap daemons trashing badly consuming most of the CPU (even starving the kernel itself). If you're lucky, the server will crash quickly. If not, even console access to the server in attempt to fix mess will be something like typing one character every 60 seconds at the console. -
SQL query returns value but EXEC SQL Task fails to assign variable
I have an execute SQL task to get an identifier from an Oracle database and assign it to a variable (the variable is used in subsequent query's where clauses to transfer the data to a SQL Server database). If I copy the query from the SSIS
package to the Oracle SQL Developer interface and run the query; I get the expected single identifier. If I run the execute SQL task I get the error "[Execute SQL Task] Error: An error occurred while assigning a value to variable "VariableName":
"Single Row result set is specified, but no rows were returned."
I can create phony/simpler versions of the query that will return the wrong identifier that will successfully assign the value to the variable, so the problem isn't with the variable itself or the way the result set is set up in the task (Result
Set/Single Row in the General panel; Result Name 0/VariableName in the Result Set panel).
How can two queries that return a single value produce different results with respect to the variable assignment process?Perhaps you can trap (profile) the query in Oracle to see what it gets submitted,
thing is this query
select id from table where ProcessedStatusColumn is null and DateColumn = (sub select to get most recent date in table where ProcessedStatusColumn is null)
is not guaranteed to return a value, you need a default returned in case the search failed e.g.
select
NVL(id, 0)
from table where ProcessedStatusColumn is null and DateColumn =
(sub select to get most recent date in table where
ProcessedStatusColumn is null)
Arthur My Blog -
How to return more than one value through RECORD TYPE from function
Hi friends,
i m ew in oracle forms. i want to return the two values at a time from a function but can't,Please help me. my codding is as following
Thanks in advance.
FUNCTION Fun_Choose_Right_cast(v_post_no payroll.post_register.post_no%TYPE) RETURN RECORD IS --here is the error
v_return_char CHAR NOT NULL := 'X';
TYPE row_no_record_type IS RECORD
(v_row_id NUMBER(3)NOT NULL := 0,
v_char CHAR NOT NULL := 'X');
row_no_record row_no_record_type;
BEGIN
IF v_post_no = 1 THEN
IF TRUNC(v_post_no*0.15) >= 1 THEN
row_no_record_type.v_row_id := v_post_no;
v_char := 'A';
--v_return_char := 'A';
END IF;
IF TRUNC(v_post_no*0.075) >= 1 THEN
row_no_record_type.v_row_id := v_post_no;
v_char := 'B';
--v_return_char := 'B';
END IF;
IF TRUNC(v_post_no*0.275) >= 1 THEN
row_no_record_type.v_row_id := v_post_no;
v_char := 'C';
--v_return_char := 'C';
END IF;
IF row_no_record_type.v_row_id = 0 AND v_char = 'X' THEN
row_no_record_type.v_row_id := v_post_no;
v_char := 'D';
--IF v_return_char = 'X' THEN
--v_return_char := 'D';
END IF;
ELSIF(v_post_no BETWEEN 2 AND 100) THEN
IF TRUNC(v_post_no*0.15) > TRUNC((v_post_no-1)*0.15) THEN
row_no_record_type.v_row_id := v_post_no;
v_char := 'A';
--v_return_char := 'A';
END IF;
IF TRUNC(v_post_no*0.075) > TRUNC((v_post_no-1)*0.075) THEN
IF TRUNC(v_post_no*0.15) > TRUNC((v_post_no-1)*0.15) THEN
row_no_record_type.v_row_id := v_post_no-1;
v_char := 'B';
--v_return_char := 'A';
ELSE
row_no_record_type.v_row_id := v_post_no;
v_return_char := 'B';
END IF;
END IF;
IF TRUNC(v_post_no*0.275) > TRUNC((v_post_no-1)*0.275) THEN
row_no_record_type.v_row_id := v_post_no;
v_char := 'C';
--v_return_char := 'C';
END IF;
IF row_no_record_type.v_row_id = 0 AND v_char = 'X' THEN
row_no_record_type.v_row_id := v_post_no;
v_char := 'D';
--IF v_return_char = 'X' THEN
--v_return_char := 'D';
END IF;
END IF;
RETURN row_no_record;
END;Posting your Oracle version is immensely helpful when asking questions (different version = different answers / functionality available).
select * from v$version;Also, using tags will preserve the formatting of your code.
You should likely read (a lot) about [http://www.stanford.edu/dept/itss/docs/oracle/10g/appdev.101/b10807/05_colls.htm]
Basically, you would need to create a PL/SQL record and reference that, OR you could create a SQL type.
If you're looking for a 'simple' way to return many single values (no arrays) then your best bet would be a procedure with multiple OUT parameters. -
Problem getting pl/sql return value
Hi,
I'm using JDeveloper 10.1.2 to generate web service from pl/sql package. But the return value is always zero.
The function is as follows:-
FUNCTION GET_LIMIT ( v1 IN NUMBER, v2 IN NUMBER)
RETURN NUMBER IS
v_result_nr NUMBER;
BEGIN
v_result_nr := v1 * v2;
END;
RETURN v_result_nr;
END GET_LIMIT;
The result on webservices endpoint page:
.. - <ns1:getLimitResponse xmlns:ns1="http://com/test/webservices/LimitCheckWS.wsdl" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<return xsi:type="xsd:decimal" xsi:nil="true" />
</ns1:getLimitResponse>
If i change the "RETURN v_result_nr" to "RETURN '1000.00'" and regenerate the web service, the return value as string is ok. The response is 1000.00 xsd:string.
Any idea why? Thx.Ok. problem solved. Setup 10g server using loadjava as per document "1.2.4.4 Verifying or Loading the dbwsclient.jar File". Thanks.
-
Get the return value of an RFC function / BAPI
Hello,
I'm a Web Dynpro Java beginner and I try to get the return value (domain: NUMC6) of an RFC function without success.
Here is what I do, could you please tell me what is wrong?
First, here is my context:
Context
|
|---- ZMy_Bapi
|
|---- MyOutputResult
| |
| |---- MyReturnValue
|
|---- MyInput
My model:
MyModel
|
|---- ZMy_Bapi_Input
|
|---- Output
| |
| |---- ZMy_Bapi_Output
| |
| |---- Return_Value
|
|---- Input_Value
The mapping between them:
- MyInput is mapped to Input_Value
- MyReturnValue is mapped to Return_Value
And my code:
ZMy_Bapi_Input bapiInput = new ZMy_Bapi_Input();
wdContext.nodeZMy_Bapi().bind(bapiInput);
bapiInput.setInput_Value("A value");
executeZMy_Bapi();
ZMy_Bapi_Output bapiOutput = new ZMy_Bapi_Output();
wdContext.nodeMyOutputResult().bind(bapiOutput);
IMyOutputResultElement outputElement = wdContext.nodeMyOutputResult().currentMyOutputResultElement();
String result = outputElement.getMyReturnValue();
Finally, here is the code of the executeZMy_Bapi() function:
try {
wdContext.currentZMy_BapiElement().modelObject().execute();
wdContext.nodeMyOutputResult().invalidate();
} catch (Exception ex) {
ex.printStackTrace();
My problem is that "result" keeps being empty
Thanks in advance for your help!It still doesn't work, I'm gonna turn crazy!
But there is one good point: I get the method you mentioned: getZMy_Bapi_OutputElementAt and getMyReturnValue without casting, just as you said first.
Here are the updated context, model, mapping and code.
Context:
MyContext
|
|---- ZMy_Bapi
|
|---- MyOutputResult
| |
| |---- ZMy_Bapi_Output
| |
| |---- MyReturnValue
|
|---- MyInput
Model:
MyModel
|
|---- ZMy_Bapi_Input
| |
| |---- Output
| | |
| | |---- ZMy_Bapi_Output
| | |
| | |---- Return_Value
| |
| |---- Input_Value
|
|
|---- ZMy_Bapi_Output
|
|---- Return_Value
Mapping
ZMy_Bapi --> ZMy_Bapi_Input
MyOutputResult --> Output
ZMy_Bapi_Output --> ZMy_Bapi_Output
MyReturnValue --> Return_Value
MyInput --> Input_Value
Code
ZMy_Bapi_Input bapiInput = new ZMy_Bapi_Input();
wdContext.nodeZMy_Bapi().bind(bapiInput);
bapiInput.setInput_Value("A value");
executeZMy_Bapi();
ZMy_Bapi_Output bapiOutput = new ZMy_Bapi_Output();
wdContext.nodeMyOutputResult().bind(bapiOutput);
String result = "";
for (int i = 0; i < wdContext.nodeZMy_Bapi_Output().size(); i++) {
IZMy_Bapi_OutputElement resultElem = wdContext.nodeZMy_Bapi_Output().getZMy_Bapi_OutputElementAt(i);
if (resultElem.getMyReturnValue() != "" && resultElem.getMyReturnValue() != null) {
result = resultElem.getMyReturnValue();
Edited by: Franis Pignon on Oct 17, 2008 11:16 PM -
Lookup return value string as Function
The only way which I know of is to define mapping parameters with the IsExprVar flag checked; then you can provide each individual business rule for one session run, source all records which have to be processed by this particular business rule and process them, and repeat the whole process until all business rules have been used. Regards,Nico
Hi,I have a requirement to load close to 100 files. Each files has different business rules. Business Rules are saved in tableI'm planning to create one stage mapping and use the lookup to read the business rule apply them, but INFA is treating the look up return values as string and not as function.. Is there a way to make INFA treat them as function Eg: Business Rule : col1|| col2 INFA load them as "col1||col2", instead of subsituting col1 value Thanks
-
What does the integer return value of the Calibrate E series function mean? (0 pass 1 fail ?????)
CurtCurt,
It returns an error code. If you set the ExceptionOnError property to true, then an exception is thrown.
0 means that there was no error. If it is a negative number, the number indicates an error code, if it is positive, then its a warning.
If you get an error, you can use the NI-DAQ error codes topic, to figure out what the error means, or search the Measurement studio help.
Hope this helps. Please let me know if you have more questions.
Nandan Dharwadker
Staff Software Engineer
Measurement Studio Hardware Team -
How to compare a boolean value returned from a function in a sql query
Hi all
i have a function which return boolean true or false.
mean while i am writing a sql query which should check this function and will return a result set only when it is true. how will i use a function which returns boolean in a sql query..
thanks in advance'
HariI don't think this is possible - i'm not sure. Can you post your function script? The reason why am i asking this is --
satyaki>set serveroutput on
satyaki>
satyaki>
satyaki>
satyaki>create or replace function test_satf(emno in number)
2 return boolean
3 is
4 v_cnt number(5);
5 v_flg boolean;
6 begin
7 select count(*)
8 into v_cnt
9 from emp
10 where empno = emno;
11
12 if v_cnt = 1 then
13 v_flg := TRUE;
14 else
15 v_flg := FALSE;
16 end if;
17
18 return v_flg;
19 exception
20 when others then
21 v_flg := FALSE;
22 return v_flg;
23 end;
24 /
Function created.
satyaki>
satyaki>
satyaki>
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>
satyaki>select count(*) from emp;
COUNT(*)
14
satyaki>
satyaki>select empno,test_satf(empno)
2 from emp;
select empno,test_satf(empno)
ERROR at line 1:
ORA-06552: PL/SQL: Statement ignored
ORA-06553: PLS-382: expression is of wrong type
satyaki>select to_char(test_satf(empno))
2 from emp;
select to_char(test_satf(empno))
ERROR at line 1:
ORA-06552: PL/SQL: Statement ignored
ORA-06553: PLS-382: expression is of wrong type
satyaki>
satyaki>create or replace function test_satf(emno in number)
2 return varchar2
3 is
4 v_cnt number(5);
5 v_flg varchar2(10);
6 begin
7 select count(*)
8 into v_cnt
9 from emp
10 where empno = emno;
11
12 if v_cnt = 1 then
13 v_flg := 'TRUE';
14 else
15 v_flg := 'FALSE';
16 end if;
17
18 return v_flg;
19 exception
20 when others then
21 v_flg := 'FALSE';
22 return v_flg;
23 end;
24 /
Function created.
satyaki>
satyaki>
satyaki>select test_satf(empno)
2 from emp;
TEST_SATF(EMPNO)
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
TEST_SATF(EMPNO)
TRUE
TRUE
TRUE
14 rows selected.Or, may be i'm missing something.
Regards.
Satyaki De. -
Using return value of a pl/sql function in the "where" coarse in a
Hi,
I have a question,
if I have a pl/sql function that returns a boolean value, how can I use
it directly in a select statement?
I can easily do this if the function returns a number value , e.g.
select * from my_table where my_package.function('abc') = 1;
But I can't figure out how to do this if the function return a boolean.
Any idea other than creating another function?
Please reply to me directly as I'm not in the email list. Thanks.BOOLEAN is not a SQL datatype - you can only reference Boolean values in PL/SQL.
-
Error getting return value from function
Hello
I'm getting a error calling a function with ODP.NET from C#
Code:
OracleCommand oraCom = new OracleCommand("NORMALIZACION.nif",oraCon);
oraCom.CommandType = CommandType.StoredProcedure;
OracleParameter param1 = new OracleParameter("numnif",OracleDbType.Varchar2);
param1.Value= "73667866A";
param1.Direction = ParameterDirection.Input;
OracleParameter param2 = new OracleParameter("nif",OracleDbType.Varchar2);
param2.Size = 10; //FIXME line
param2.Direction = ParameterDirection.ReturnValue;
oraCom.Parameters.Add(param1);
oraCom.Parameters.Add(param2);
oraCom.ExecuteNonQuery();
nif_norm = oraCom.Parameters["nif"].Value.ToString();
if i write the FIXME line i get a error (ORA-06502) complaining about the size, no matter the value i wrote.
If i don't write the FIXME line, it works but nif_norm is always empty, although the function i call is a single return 'Hello';
Where am I wrong??
Any help, examples with varchar2 as return value???
BTW: the same code with the MS provider for Oracle works fine.Good point -- i shall do so.
What I think I'm missing, in my quest for ODP.NET competence, is a solid set of example code. I've searched around and found various fragements here and there, but when it comes to data access from .NET there must surely be some finitie set of possibilities (if we can discount bad practices like building dynamic SQL statements without bind variables).
For example, possibly in increasing order of complexity ...
* Read a single value from a SQL statement ... "select emp_name from emp where rownum < 2"
* Read a single value by passing in a parameter ... "select emp_name from emp where user_id = :?"
* read multiple values ... "select emp_name from emp where user_id in (:?,:?)"
* execute a stored procedure with no in or out parameters
* retreive a value from a function with no parameters
* pass a parameter to a stored procedure
* read an out parameter from a stored procedure
Then work with in and out ref cursors, blobs, whatever.
Thoughts?
Maybe you are looking for
-
Windows xp and my old sound blaster live its a 5 but not a 5.1 crash pc when softeware goes
[size="4" face="Verdana">If anyone can help me out it is 6 formats in 4 days due to my soundblaster li've I have installed from window 98 now converted to windows xp[size="4" face="Verdana">it will not take the software it crashes my pc, cannot even
-
The New Creative Zen Stone plus with built-in spea
?i was thinking of buying the the New Creative Zen Stone plus 2GB?with built-in speaker. http://creative.com/products/mp3/zenstoneplus/?The product detail info claim a 20 hours battery life of this product. . is?this a?true claim ?2. is there any pro
-
Windows HPC - unable to shutdown nodes from Node Manager
I have a small Windows HPC Server 2008 R2 cluster that we purchased and asked for it to be a "Turn Key and Go" type deal, so we didn't configure it. The annoyance I am having is that I can't reboot or shutdown the compute nodes from the Node Manageme
-
Changes to lists when structured topics are sent to RoboHelp
In FrameMaker I've created several DITA topics (no specializations, just topics) and included them in a ditamap. I mapped my Frame template styles to my RoboHelp .CSS styles. Then I linked to the ditamap from a RoboHelp HTML project. The topics came
-
Elements 8 -help with outputting slide shows to File?
Can anyone help with saving a slide show in created in Elements to a file on my laptop? I know a WMV file is created, which option should I select to save in UK widescreen format 16:9?