Schema as parameter in an stored procedure.
Hi all!
I would need to set the schemas I'll have to use in an stored procedure as a variable, this is:
- I have this query: SELECT * FROM USER.TABLE_CUSTOMERS;
- I'll have to set the schema with the parameter I have: SELECT * FROM s_user.TABLE_CUSTOMERS;
- ...where s_user is an string and can have values like ADMIN, PREMIUMUSER, BASICUSER an so on, the schemas I have. But this doesn't runs so... there's any way to implement what I want to do? Hope you can understand my problem :)
Thanks in advance!
Thanks to both for the help :-) Now I think I'm near to the solution, but have some doubts an problems... lets see. I'll have this procedure in a general schema, because it will be executing every midnight in order to update a table in all the other schemas. I could just copy this procedure in each schema, but this is not a good solucion since a change in code means to change again the procedure in many schemas. So the idea is to have the procedure in a general schema, ok. Although a dynamic sql is not the best solution, I think is the only one for this, so I think I'll use...
EXECUTE IMMEDIATE 'alter session set CURRENT_SCHEMA=' ||s_user;
..in my procedure. But now, modifying the code, something doesn't run well. Imagine I have this stupid code:
CREATE OR REPLACE PROCEDURE Stupid_Procedure AS
myVar NUMBER;
BEGIN
EXECUTE IMMEDIATE 'alter session set CURRENT_SCHEMA=mySchema';
INSERT INTO acmeTable (acmeField) SELECT TO_CHAR(sysdate, 'MM') FROM dual;
END Stupid_Procedure;
Well, the acmeTable is a table in mySchema, but not in the current schema, but having set the CURRENT_SCHEMA to mySchema previously, there should not be any problem with the following query, should be? Well, yes, there's a problem because Oracle remarks this row and tells me... "table or view does not exist"
What do you think I'm doing wrong?
Thank you sincerely.
Similar Messages
-
How to pass the parameter of a stored procedure to iReport
Hi... i don't know how to pass the parameter of the stored procedure to the iReport.
In the Report Query, i tried
1. sp_storedprocedure ' value'
2. sp_storedprocedure +''''+$P{parameter}+''''+
3. sp_storedprocedure +$V+$P{parameter}++$F($F is a variable having a value of ' (a single quote))may you enlighten us please? thank youFor M$ SQL server I find that it only works when U use the fully qualified name...
e.g. catalod.dbo.my_procedure_name 'variable'
My full query in the Report Query window is something like this:
EXEC arc.dbo.jasper_Invoice 1000
Note that you may find that selecting from VIEWS / TABLES fails for no apparent reason and iReport will prompt you with the usual very unhelpful (we have what we "pay" for) prompt, stating that "The document is empty".
To work around this issue, where a statement like "SELECT * FROM arc.dbo.acc_invoices WHERE Invoice_id=1000" does not work, simply create a PROC, something like:
CREATE PROC jasper_MyProc (@my_rec_id integer) AS
SELECT * FROM arc.dbo.acc_invoices WHERE Invoice_id= @my_rec_id integer
...to wrap your SELECT statement, then call the PROC
Edited by: Sylinsr on Apr 22, 2008 4:23 PM -
Passing Multi-Value Parameter to a Stored Procedure
Has anyone experienced passing a Parameter (MultiValue) to a Stored Procedure? I am aware that Crystal Passes the Param as an Array. How would you go about handling this within a Stored Procedure???
Hi Daniel
Try as below:
1. Create a Crystal report, and add a multi-value parameter.
2. Since the multi-value parameter is treated as an array, create a formula that uses the JOIN function. Create a formula as below:
//Formula: @JoinFormula
Join ({?Multi-value parameter array},";")
====================
NOTE:
In the formula above, a semi-colon (";") is the delimiter.
====================
3. Within the main report, create a subreport based on the stored procedure, and include the parameter to be populated with the multi-value list.
4. Link the Join formula in the main report to the stored procedure parameter in the subreport.
Doing so passes a multi-value parameter to the stored procedure.
Hope this helps!!!!
Regards
Sourashree -
Would like to pass multi-value parameter to a stored procedure
Hi,
Is it possible to pass a multi-value parameter to a stored procedure using crystal reports.
Is there is a way to do so??/
Thanks,
Brian.Hi,
Is it that you want to pass 2 or more parameters to a stored proc. it is possible
go to database expert
select your connection and click on add command their you will have to create parameters and pass to a proc
for ref..
{CALL `menagerie`.`sp_timer`({?delay time},{?delay time2})}
where `menagerie`.`sp_timer` is a stored proc.
and delay time and delay time2 are parameters.
but if it is like you have to pass multiple values to stored proc using single parameter as per my experience its
not possible. -
How to pass parameter from 1 stored procedure to another stored procedure inside crystal report
Hi
I have several stored procedure in my Crystal Report. I am wondering if it is possible for me to pass a parameter to one of the stored procedure and to use the result of that stored procedure E.g. CustomerCode. To another 2 stored procedure to generate the report dynamically?
I have 3 stored procedure
The 1st one is used to gather information and process the calculation
another 2 stored procedure is used for generate the graph and both of them required to take 2 parameters. The 1st stored procedure will require 1 parameter (E.G. Reference Code) and will return a set of information including the data that could be use on the other 2 stored procedures.
After I added these 2 stored procedure, it requires me to pass 3 parameters to the report. I would like to know if I could only pass the Reference Code for stored procedure 1 and use it to retrieve the information for the other 2 parameter?
Thanks in advance
ChiHi Chi
To pass parameter from 1 stored procedure to another stored procedure, you will have to create sub report. In your case you will have to create 2 sub reports for 2nd and 3rd stored procedure and link those sub reports with the main report using Reference Code field in order to pass the values.
After creating the report when you will refresh the report, it will ask 4 parameters, one parameter for main report, one for the first subreport and two for second subreport to fetch the data correctly.
Regards
Poonam Thorat. -
Problem in OUT Parameter in the stored procedure
Hi,
I have a problem in the OUT parameter of the stored procedure under the package. I encountered the error PLS-00306. Below are the codes.
Package
CREATE OR REPLACE package body test as
procedure sp_countries(rst OUT country_typ) as
sql_stmt VARCHAR2(300);
begin
sql_stmt := 'SELECT * FROM countries WHERE region_id = 1';
OPEN rst FOR sql_stmt;
end;
end test;
by the way. i declared the country_typ as this:
TYPE country_typ IS REF CURSOR;
Here is the code that will call this package:
declare
tst countries%ROWTYPE;
begin
test.sp_countries(tst);
dbms_output.put_line(tst.country_name);
end;Works for me. Although I had to use emp instead of your table:
SQL> create or replace
2 package test as
3 TYPE country_typ IS REF CURSOR;
4 procedure sp_countries(rst OUT country_typ);
5 end;
6 /
Package created.
SQL> CREATE OR REPLACE
2 package body test as
3 procedure sp_countries(rst OUT country_typ) as
4 sql_stmt VARCHAR2(300);
5 begin
6 sql_stmt := 'SELECT * FROM emp WHERE deptno = 20';
7 OPEN rst FOR sql_stmt;
8 end;
9 end test;
10 /
Package body created.
SQL> var tcur refcursor
SQL> exec test.sp_countries(:tcur);
PL/SQL procedure successfully completed.
SQL> print tcur
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 17-DEC-80 800 20
7566 JONES MANAGER 7839 02-APR-81 2975 20
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
SQL> -
How to pass a table as parameter on a stored procedure
Hello all,
I want to pass the name of a table as parameter into a stored procedure, that will be used for cursors etc.
But when i pass the parameter and i compile the S.P. it give me error (error: table not existing...)
Any Help?
Thanks in advance, MarcoMarco wrote:
As i've written above, i'm using stored procedures like 'batch' programs which will be executed with oracle scheduler (passing to s.p. the name of the 'input' tables)
These input tables are 'external' tables which have got the same structure; for example i've got TABLEX_001, TABLEX_002, XXTAB etc. with the same structure.
This is the the reason... what do you think?An external table definition can reference multiple files via the LOCATION definition or you can user "ALTER TABLE" to alter the location and change the file that the external table points to.
Thus you only need one static External Table and use an alter table (via execute immediate) to change the file location it points to, or if you want all the data together, just specify all the files in the location.
That would be clean design, using one fixed table, without the need to pass any table names, just dynamically altering the file names if necessary at run time. -
Set Null as Default for input parameter to a stored procedure
hi ,
How can we set default values as NULL to an input parameter in a stored Procedure.
create or replace procedure emp_proc ( p_test_input in varchar2
p_emp_id in number,
p_emp_name in varchar2,
p_manager_id in number )
as
begin
if ( upper ( p_test_input ) = 'I' )
then
insert into emp
values ( p_emp_id ,p_emp_name ,p_Manager_id,sysdate );
elsif ( upper ( p_test_input ) = 'D' )
then
delete from emp
where emp_id = p_emp_id;
else
dbms_output.put_line
( 'Please input ''A'' for ADD or ''D'' Delete EMPLOYEE'
end if;
end;As Shown above if i want to do only delete operation
i want to call this procedure like without passing extra parameters .
EXECUTE emp_proc('D',1010);Edited by: Rede on May 28, 2010 12:21 PM
Edited by: Rede on May 28, 2010 12:22 PMcreate or replace procedure emp_proc ( p_test_input in varchar2,
p_emp_id in number,
p_emp_name in varchar2 default null,
p_manager_id in number default null ) -
Pass a datarow as input parameter in a stored procedure
Hi everyone!
I wonder if anyone know how to pass a datarow (better if tipized like "tablenameRow") as input parameter for a stored procedure.
links or suggestions are welcome! (i'm newbie in .net programming, so if you can post some code i'll be really grateful!)
Thank you!Hi,
YES!! its possible you can pass a datarow to a SP from your Dot net application.
Here below i'm going to give you an example for Desktop Application.
For Passing a datarow as Input Parameters, your SP need to support for all these parameters.
I mean, if a data row has 03 Columns. Then your procedure should be able to take 03 arguments/parameters.
--Adjust code according to your need.
--Its for C# Desktop application.
--Visual Studio Professional, Framework (2.0)
//Setting connections.
OracleConnection con=new OracleConnection("Data Source=orcl9i; user id=scott; password=tiger");
OracleComand cmd=new OracleCommand(con);
cmd.Type=CommandType.StoredProcedure; //you are useing SP
cmd.Text="my_stored_procedure"; //Mention SP name.
--if DataRow has Three columns. You need three parameters.
OracleParameter p1=new OracleParameter ();//By default parameters are input parameters.
OracleParameter p2=new OracleParameter ();
OracleParameter p3=new OracleParameter ();
//We assume that Datarow already has data in it.
p1.ParametersName="sp_var1 ";
p1.OracleDbType=OracleDbType.Varchar;
p1.Value=tablenameRow[1]; //Here DataRow object's Column1 is input.
p2.ParametersName="sp_var2 ";
p2.OracleDbType=OracleDbType.Varchar;
p2.Value=tablenameRow[2]; //Here DataRow object's Column2 is input.
p3.ParametersName="sp_var3 ";
p3.OracleDbType=OracleDbType.Varchar;
p3.Value=tablenameRow[3]; //Here DataRow object's Column3 is input.
cmd.OracleParameter.Add(p1); //Add parameters.
cmd.OracleParameter.Add(p2); //Add parameters.
cmd.OracleParameter.Add(p3); //Add parameters.
cmd.ExecuteNonQuery(); //Execute Procedure here.
Feel free to ask if still found problem.
.... -
How do i handle out parameter from a stored procedure in a vb form?
hi all,
I want to return a varchar2(500) type of out parameter from a pl/sql stored procedure to a vb form?? how do i do this??
regards
akshayWell, when you create the parameter collection for your command object, just set the correct value for the direction component.
You would set it to one of the below, depending on if the parameter is IN OUT or only OUT:
<parameter_obj>.Direction = ParameterDirectionEnum.adParamInputOutput
<parameter_obj>.Direction = ParameterDirectionEnum.adParamOutput -
How to retrieve the outer parameter of a stored procedure in XSQL page
I have to call a stored procedure in the xsql page that returns a resultset (ie. oracle table/record type) through an outer paramter. Is there any built-in xsql action tag available to get the parameter and present
it in xml on the page? please help, thanks.You cant get two resultsets out of SP like this. The workaround is to merge and bring the resultsets.
For this number of columns as well as corresponding datatypes have to be compatible. Also you will need one additional column which indicates resultset value. Then use this as filter to get your desired resultset out
create procedure GetData as
begin
select 'resultset1' as Cat,*,.. N columns from Emp
union all
select 'resultset2' as Cat,*,.. N columns from Dept
end
create table #tmp1 (Ddeptid int, deptname varchar(500),Location varchar(100))
Insert into #tmp1 (Ddeptid , deptname ,Location )
Select column1,column2,column3
from OPENROWSET('SQLOLEDB','Data Source=Server_name;Trusted_Connection=yes;
Integrated Security=SSPI','Execute yourdb..GetData')
WHERE Cat = 'resultset1'
create table #tmp (empid int , ename varchar(500),DeptId int , salary int)
Insert into #tmp (empId,ename,deptId,salary)
Select column1,column2,column3, column4
from OPENROWSET('SQLOLEDB','Data Source=Server_name;Trusted_Connection=yes;
Integrated Security=SSPI','Execute yourdb..GetData')
WHERE Cat = 'resultset2'
also see
http://sqlblogcasts.com/blogs/madhivanan/archive/2007/11/26/select-columns-from-exec-procedure-name-is-this-possible.aspx
Another method is to populate table with relevant resultset within procedure itself and then select from the table directly outside.
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
Visakh
My Wiki User Page
My MSDN Page
My Personal Blog
My Facebook Page -
CR XI - Pass a Multi-value Parameter to a Stored Procedure
Hello,
Here is my problem !
My Main Report accept a Multi-value Parameter "myParameter".
I create a formula "lstParameter" (Join({?myParameter},',') linked to my SubReport (string static parameter based on a Stored Procedure which returns a RefCursor (ORACLE)).
When I launch the Main Report, he is blank...but if I open the subreport in the overview i can see the result...
it seems like the MainReport don't call the SubReport, or something like that...
I hope you can help me !
Thanks
Anthony
Edited by: anthony.44 on Jan 12, 2012 4:53 PM
Edited by: anthony.44 on Jan 13, 2012 9:51 AMhello,
I resolve my problem....just inside into the detail of the Master report a result of a query (ex: select sysdate from dual)...and the sub report is called correctly -
Parameter type in stored procedure call
What is the best way using ODP.net to reference the parameter type?
I have several stored procedure in a Oracle 9i database.
The database looks like:
Name Null? Type
FLTID NOT NULL NUMBER(10)
PLANEID NOT NULL VARCHAR2(3)
The call in my VB.net app is:
cmd = New OracleCommand("AeronauticsUtils.Flights_insert", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New OracleParameter("fID", OracleDbType.Int32, ParameterDirection.Input)).Value = row("FLTID")
cmd.Parameters.Add(New OracleParameter("plnid", OracleDbType.Varchar2, ParameterDirection.Input)).Value = row("PLANEID")
cmd.ExecuteNonQuery()
cmd.Dispose()
What should I use?
OracleDbType.Int32
OracleType.VarChar
Types.OracleDecimal
or something else?I use OracleDbType.Decimal for NUMBER columns and OracleDbType.Varchar2 for VARCHAR2 columns.
Are you having issues?
- Mark
===================================================
Mark A. Williams
Oracle DBA
Author, Professional .NET Oracle Programming
http://www.apress.com/book/bookDisplay.html?bID=378 -
Does OraOLEDB support passing a Ref Cursor as an IN parameter of a Stored Procedure?
We have a number of Stored Procedures that take a Cursor as an input parameter. Is it possible to call a Stored Procedure of this type with OraOLEDB? If so could you provide a quick sample using VC++/ATL?
Thanks...Thank you for your reply, Yuancai. It would be very useful if the OLE DB team added such an interface to future versions of TCommand. However, for the time being what is the preferred technique for passing large amounts of data to a stored procedure? For instance we have a number of tables that have fifty or more columns. It would be awkward to call a stored procedure with this many parameters. Ideally, one would want to create a structure as a User Defined Type and pass that as a parameter.
One approach we though of was to pass a XML string though a CLOB parameter and parse it in either a PL/SQL or Java stored procedure. However, while this approach is novel it is not standard. I've found it best to use standard techniques where possible. Any insight you could give would be appreciated.
Thanks,
Bryan Wood -
CHAR as out parameter in a stored procedure
Reading a CHAR out parameter from a PL/SQL stored procedure with getString() returns a string with 32000 chars, instead of 3 (the original variable size). If the parameter is defined as varchar2, no problem occurs.
Here is an example:
create or replace procedure test2sp(c out char) as
begin
c := 'FOO';
end test2sp;
and here is the java code
java.sql.CallableStatement cs = conn.prepareCall("{ call test2sp(?) }");
cs.registerOutParameter(1, java.sql.Types.CHAR);
cs.execute();
String c = cs.getString(1);
bye,
nullPlease take a look at http://technet.oracle.com/doc/oracle8i_816/java.816/a81354/tips3.htm#1001047
Thanks.
Maybe you are looking for
-
Not able to access my files on in built device media on BB 9800
I am unable to access any files (music, pictures, videos etc) saved on Device in-built storage neither from BB nor from desktop manager since morning.
-
A Problem with Rolling forecast
Hi Experts, Currently i have a problem in the Query Designer. Any help or suggestion will be very much appreciated. The system that we have is BI 7. What we want to have is a rolling forecast for the Profit and Loss Account. It means that we will loc
-
I'm trying to free some space up on my computer and was going to start compressing as many files as I can. I noticed that when I compress one, I see the new zipped file and then still the original files. So, should I delete the original files after
-
IPod, iTunes Syncing on Leopard + Apple Wired Keyboard = Hang and problems
Sorry for the cryptic topic title but I search liked crazy and through several different sites I managed to hobble together a configuration that reproduces my problem. Maybe those terms will helps others... Anyway, I have Mac Pro with OS X 10.5 (Leop
-
MOVED: EX600 CPU problem
This topic has been moved to MSI Notebook. https://forum-en.msi.com/index.php?topic=155284.0