Page 1 of 1

support for functions in oracle database packages

Posted: Wed 10 Feb 2010 12:29
by Micha_
Are there plans to add support for functions in oracle database packages (to add them to the entity model, not only to the storage model)?
And will there be support for user defined types and nested tables?

Posted: Thu 11 Feb 2010 13:34
by AndreyR
If you are using drag&drop from the Database Explorer, the methods are generated.
If you are using Reverse Engineering Wizard, the methods are not generated.
The reason for this behaviour is the fact that procedures in Oracle are more often used for CUD operations than for querying.

Posted: Thu 11 Feb 2010 15:24
by Micha_
Thanks for reply!
But maybe my questions where a little bit misunderstanding. So let me concrete on that:
In the Entity Developer I can see my orcale database packages in the database explorer. If I try to add a storage function out of a package to the storage model there is no poblem. But if I try to add the function to the Entity Model I get the following error: "cannot create method for storage function xyz that can be composed. Only stored procedures may be mapped."

My next problem was on the usage of unsoported data types. If I want to add a stored procedure (or function) containing a parameter that has a user defined type to the storage model I get the message: "The parameter xyz has an unsupported data type 'TABLE'. Cannot create method..."

So my question was, will there be support for storage functions and user defined types in future versions (perhaps this maybe a general problem with the first version of the entity framework and will solved with EF4?).

Posted: Fri 12 Feb 2010 12:08
by AndreyR
You can use the following workaround for the function returning scalar type (it is not supported in EDM Designer, but in Entity Developer you can map it):
- add the function to the designer surface (there will be an error message indicating that it is a composable function).
- set the Composable property of the generated stored procedure(in DataSourceModel.Store) to false.
- set the return type to (None).
- go to the CommandText property and set the command text to "begin; :result := .(); end;".
- go to the Parameters tab and adjust the parameters. Set the direction of the result parameter to output.
- drag the procedure to the designer surface. You will get a warning about metadata obtaining. Say 'No', it is not necessary.
Now you can use your function from your code. The return value can be obtained as a ref 'result' parameter of the generated method.
As for the User Defined Types, I am not aware of plans to add them in EF v4 and they are not supported in EF v1.