Datapump reformats stored procedure source
If you do this:
1. Save the Source to a file using:
select type, name, line, text from user_source order by 1, 2, 3;
2. Export the schema using expdp
3. Drop/change the schema
4. Restore the schema back using impdp and the dump file from 2 above.
5. Run the query from 1 above again and save the results to another file.
6. Compare (diff, sdiff) the files in 1 and 5 you will see the following general differences:
The text of ALL user_source rows where LINE=1 will be different , e.g. what was originally :
FUNCTION TDESK_MOD_USER 1 FUNCTION fn_mod_user (p_user_token IN NUMBER)
Will now be:
FUNCTION TDESK_MOD_USER 1 FUNCTION *"FN_MOD_USER"* (p_user_token IN NUMBER)
And the seocnd file will have show that all source objects have an extra blank line at the end.
Also, in the trigger source you will find that schema refences have been added by data pump, e.g. was was origibnally:
TRIGGER TRG_URL_BIR 1 TRIGGER TRG_URL_BIR
is now:
TRIGGER TRG_URL_BIR 1 TRIGGER *"XXXX"."TRG_URL_BIR"*
This is very annoying because it means I have to "massage" the diffs to factor these known diff in. Is there any flag for expdp/impdp which tells it not apply this refomratting to the source?
Edited by: msrana on Nov 1, 2009 5:11 PM
You are the first person I've heard of that thinks there is an issue here and I would guess it is because you are doing something wholly inappropriate as a substitute for good change management practices.
Instead of posting what you are doing ... post, in business terms, what you are trying to accomplish (no code or pseudocode). Then we can help you do it correctly,
Similar Messages
-
How to hide Stored Procedure Source?
Hi:
i want to hide my stored procedure source code to prevent it to be viewed even DBA. How could i do it?
Thanks!
nullHello for this purpose you can use PL/SQL wrapper shown below are steps in using it.
1. Create your source code file.
e.g. mysql.sql file is
* This is test source code file,will be used by SQL Wrapper.
* Author - Mr. Adinath R. Kamode
* Date - May 30,2001
Create or replace procedure pwraptest (v_empno number) as
v_empname varchar2(30);
v_sal number (10) := 0;
begin
dbms_output.put_line('......................................................................');
dbms_output.put_line(' Testing PL/SQL Wrapper ');
dbms_output.put_line('......................................................................');
-- Obtain employee name and Salary
select ename,nvl(sal,0) sal
into v_empname,v_sal
from emp
where empno = v_empno;
dbms_output.put_line('Employee Name,Salary.... '| |v_empname| |','| |to_char(v_sal));
end;
2. At your operating system prompt use WRAP command syntax is
WRAP80 INAME=input_filename [ONAME=Output_filename]
Input_filename = Input file name is path and name of your source code file with sql extension,you can specify other extensions also.
Input file can contain any combination of SQL statements,but wrapper wraps only following Create statements.
Output_filename = Optional,Output filename is path and name for wrapper output file. If not specified wrapper will take input_filename and extension plb (PL/SQL library)
e.g WRAP80 INAME = c:\mysql.sql <Enter>
WRAP80 INAME = c:\mysql <Enter>
WRAP80 INAME = c:\mysql.src <Enter>
WRAP80 INAME = c:\mysql.sql ONAME= c:\mysql.plb <Enter>
WRAP80 INAME = c:\mysql.sql ONAME= c:\wrafile.plb <Enter>
WRAP80 INAME = c:\mysql.sql ONAME= c:\wrafile.obj <Enter>
3. Assume after running wrapper,wrpped code in mysql.plb file, you can run this file at sql prompt
as a normal PL/SQL source code file.
e.g. SQL> @c:\mysql.plb <Enter>
Output -
DOC> * This is test source code file,will be used by SQL Wrapper.
DOC> * Author - Mr. Adinath R. Kamode
DOC> * Date - May 30,2001
DOC>*/
Procedure created.
SQL>
4. Now as procedure is created you can run it using EXEC command.
e.g. SQL> set serveroutput on
SQL> Exec pwraptest (7788);
Output -
Testing PL/SQL Wrapper
Employee Name and Salary... SCOTT,9375
PL/SQL procedure successfully completed.
Adinath Kamode -
Need sample source code for calling stored procedure in Oracle
Hi.
I try to call stored procedure in oracle using JCA JDBC.
Anybody have sample source code for that ?
Regards, Arnold.Thank you very much for a very quick reply. It worked, but I have an extended problem for which I would like to have a solution. Thank you very much in advance for your help. The problem is described below.
I have the Procedure defined as below in the SFCS1 package body
Procedure Company_Selection(O_Cursor IN OUT T_Cursor)
BEGIN
Open O_Cursor FOR
SELECT CompanyId, CompanyName
FROM Company
WHERE CompanyProvince IN ('AL','AK');
END Company_Selection;
In the Oracle Forms, I have a datablock based on the above stored procedure. When I execute the form and from the menu if I click on Execute Query the data block gets filled up with data (The datablock is configured to display 10 items as a tabular form).
At this point in time, I want to automate the process of displaying the data, hence I created a button and from there I want to call this stored procedure. So, in the button trigger I have the following statements
DECLARE
A SFCS1.T_Cursor;
BEGIN
SFCS1.Company_Selection(A);
go_Block ('Block36');
The cursor goes to the corresponding block, but does not display any data. Can you tell me how to get the data displayed. In the future versions, I'm planning to put variables in the WHERE clause. -
I select the shared datasource from the data source propeties dialog, test the connection and everything is good.
I add a dataset by selecting "use a dataset embedded in my report" option within the Dataset properties dialog.
I select the newly added data source, click the "Stored procedure" query type and drop down the list box and select my intended stored procedure.
the timeout for the dataset is "0" seconds.
I click the "OK" button and I'm presented with the parameters to the stored procedure.
I enter valid data for the parameters and click the "OK" button.
I then get the following error message after 30 seconds:
The problem is, all of the timeouts, that I'm aware of, have values of zero (no timeout) or high enough values that 30 seconds isn't even close to the timeout.
I think the smallest timeout we have is 120 seconds.
I have searched this site and many others and the solutions all involve altering the stored procedure to get the fields into report builder and then revert the stored procedure back to its original form.
To me, this is NOT a solution.
I have too many stored procedures that need to be brought into Report Builder.
I need a real solution.
Thank you for you time, Tim Caldwell.
Timothy E CaldwellI don't mean to be rude, but really, check to see if the stored procedure can return data rows???
Maybe I'm not being clear enough.
The stored procedure runs perfectly fine.
it runs perfectly fine in the production environment and the test environment.
I can access the stored procedure in several ways and have it return correct data.
I can even trick report builder into creating a dataset with parameters and run the stored procedure that way.
What I cannot do, is to get report builder to not timeout after 30 seconds on the initial creation of a dataset with a Query type of stored procedure.
I have seen this issues posted again and again and again on may different sites and the "solution" is to simplifiy the stored procedure by creating a stored procedure that has a create table and a select in the stored procedure and that's it. After
report builder creates the dataset the developer then has to replace the simplified stored procedure with the actual stored procedure and everything works fine after that.
HOWEVER, having to go through this process for 70 or more stored procedures is ridiculous.
It would appear that there is something within report builder itself that is causing this issue.
The SQL Script included is an example of a stored procedure that will not create fields create a dataset with fields and parameters in Report Builder 3.0:
USE [CRUM_IT]
GO
/****** Object: StoredProcedure [dbo].[COGNOS_Level5ScriptSP] Script Date: 11/17/2014 08:02:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[COGNOS_Level5ScriptSP]
@CompanyCode varchar(8) = null,
@GetSiblings varchar(1) = 'N'
as
Begin
-- get emergency contact info
select *
into #tmp_Contacts
from
(select
ConEEID,
con.connamelast as [Emer Contact Last Name],
con.connamefirst as [Emer Contact First Name],
con.connamemiddle as [Emer Contact Middle Initial/Name]--,
,ROW_NUMBER() over (Partition by ConEEID order by ConNameLast)as rn
,ISNULL(
case when con.conphonepreferred = 'H'
then '(' + substring(con.conphonehomenumber, 1, 3) + ')' + substring(con.conphonehomenumber, 4, 3) + '-' + substring(con.conphonehomenumber, 7, 4)
else '(' + substring(con.conphoneothernumber , 1, 3) + ')' + substring(con.conphoneothernumber , 4, 3) + '-' + substring(con.conphoneothernumber , 7, 4)
end,
) as [Emergency Phone]
from [ultiprosqlprod1].[ultipro_crum].dbo.Contacts con
where con.ConIsEmergencyContact='y'
and con.ConIsActive='y'
) A
where A.rn = 1
CREATE TABLE #tmp_CompanyCodes (CompanyCode varchar(8))
If @GetSiblings = 'Y'
Begin
INSERT INTO #tmp_CompanyCodes (CompanyCode)
EXEC [z_GetClientNumbers_For_ParentOrg_By_ClientNumber] @CompanyCode
End
INSERT INTO #tmp_CompanyCodes
values (@CompanyCode)
select *
into #tmp_Company
from [ultiprosqlprod1].[ultipro_crum].dbo.Company
where cmpcompanycode in (select CompanyCode from #tmp_CompanyCodes)
select distinct
cmpcompanycode as [Client ID],
CmpCompanyDBAName as [Client Name],
eec.eecEmplStatus AS [Employment Status],
eec.eecEmpNo AS [Employee Num],
rtrim(eep.eepNameLast) AS [Last Name],
rtrim(eep.eepNameFirst) AS [First Name],
isnull(rtrim(ltrim(eep.eepNameMiddle)), '') AS [Middle Initial/Name],
rtrim(eep.eepAddressLine1) AS [Address Line 1],
isnull(rtrim(eep.eepAddressLine2), '') AS [Address Line 2],
eep.eepAddressCity AS [City],
eep.eepAddressState AS [State],
CASE
WHEN len(eep.eepAddressZipCode) > 5 and charindex(eep.eepAddressZipCode, '-', 1) = 0
THEN substring(eep.eepAddressZipCode, 1, 5)
ELSE rtrim(eep.eepAddressZipCode)
END AS [Zip code],
CASE
WHEN len(eep.eepAddressZipCode) > 5 and charindex(eep.eepAddressZipCode, '-', 1) = 0
THEN substring(eep.eepAddressZipCode, 6, 4)
WHEN len(eep.eepAddressZipCode) > 5 and charindex(eep.eepAddressZipCode, '-', 1) > 0
THEN substring(eep.eepAddressZipCode, charindex(eep.eepAddressZipCode, '-', 1) + 1, 4)
WHEN len(eep.eepAddressZipCode) <= 5
THEN ''
END AS [ZIP + 4],
substring(eep.eepSSN, 1, 3) + '-' + substring(eep.eepSSN, 4, 2) + '-' + substring(eep.eepSSN, 6, 4) AS [SSN],
isnull(convert(VARCHAR(10), eep.eepDateOfBirth, 101), '') AS [Date Of Birth],
eetFED.TAXCODE AS [FED Tax Code],
eetFED.FILINGSTATUS AS [Fed Filing Status],
eetFED.EXEMPTIONS AS [Fed Exemption Allowance],
eetFED.ADDITIONAL AS [Additional Fed Withholding],
eetSIT.TAXCODE AS [SIT Tax Code],
eetSIT.FILINGSTATUS AS [State Filing Status],
eetSIT.EXEMPTIONS AS [State Exemption Allowance],
eetSIT.ADDITIONAL AS [Additional State Withholding],
isnull('(' + substring(eep.eepPhoneHomeNumber, 1, 3) + ')' + substring(eep.eepPhoneHomeNumber, 4, 3) + '-' + substring(eep.eepPhoneHomeNumber, 7, 4), '') AS [Home Phone],
isnull((SELECT cod.codDesc
FROM [ultiprosqlprod1].[ultipro_crum].dbo.Codes cod WITH (NOLOCK)
WHERE cod.codCode = eep.eepEthnicID
AND cod.codDosTable = 'ETHNICCODE'), '') AS [Race-Origin], --eep.eepEthnicID AS [Race-Origin],
eep.eepGender AS [Gender],
isnull(convert(VARCHAR(10), eec.eecDateOfOriginalHire, 101), '') AS [Original Hire Date],
isnull(convert(VARCHAR(10), eec.eecDateOfSeniority, 101), '') AS [Seniority Date],
isnull(convert(VARCHAR(10), eec.eecDateOfTermination, 101), '') AS [Termination Date],
isnull(eecTermType,'') as [Termination Type],
isnull(TchDesc, '') as [Termination Reason],
rtrim(eec.eecJobCode) AS [WC Code],
isnull(eec.eecJobTitle, '') AS [Job Title],
pgr.pgrPayFrequency AS [Pay Frequency],
eec.eecFullTimeOrPartTime AS [Full/Part Time],
eec.eecSalaryOrHourly AS [Pay Type],
isnull(convert(MONEY, eec.eecHourlyPayRate), 0.00) AS [Hourly Rate],
isnull(eec.eecAnnSalary, 0.00) AS [Annual Salary],
[YTD Hours],
isnull(eep.eepNameFormer, '') AS [Maiden Name],
eec.eecLocation AS [Location ID],
rtrim(eec.eecOrgLvl1) AS [Department ID],
eec.eecorglvl2 AS [Cost Item],
eec.eecorglvl3 as [Client Project],
eec.eecPayGroup as [Pay Group],
isnull(eepAddressEMail,' ') as [Email Address],
isNull(BankName1,' ') as PrimaryBank,
isNull(BankRoute1,' ') as PrimaryRouteNum,
isNull(Account1,' ') as PrimaryAccount,
isNull(AcctType1,' ') as PrimaryAcctType,
isNull(DepositRule1,' ') as PrimaryDepositRule,
isNull(BankName2,' ') as SecondaryBank,
isNull(BankRoute2,' ') as SecondaryRouteNum,
isNull(Account2,' ') as SecondaryAccount,
isNull(AcctType2,' ') as SecondaryAcctType,
isNull(DepositRule2,' ') as SecondaryDepositRule,
isNull(
CASE
WHEN DepositRule2 = 'D'
THEN '$' + convert(varchar, cast(EddAmtOrPct2 AS decimal(10,2)))
WHEN DepositRule2 = 'P'
THEN convert(varchar, cast((EddAmtOrPct2*100) AS decimal(10,0))) + '%'
ELSE null
END,' ') as SecondaryDepositAmount,
isNull(BankName3,' ') as ThirdBank,
isNull(BankRoute3,' ') as ThirdRouteNum,
isNull(Account3,' ') as ThirdAccount,
isNull(AcctType3,' ') as ThirdAcctType,
isNull(DepositRule3,' ') as ThirdDepositRule,
isNull(
CASE
WHEN DepositRule3 = 'D'
THEN '$' + convert(varchar, cast(EddAmtOrPct3 AS decimal(10,2)))
WHEN DepositRule3 = 'P'
THEN convert(varchar, cast((EddAmtOrPct3*100) AS decimal(10,0))) + '%'
ELSE null
END,' ') as ThirdDepositAmount,
Supervisor,
eec.eecEEID AS [Employee EEID],
eec.EecJobCode As [Job Code],
isnull(eec.EecTimeclockID,' ') As [Time Clock ID],
con.[Emer Contact Last Name],
con.[Emer Contact First Name],
con.[Emer Contact Middle Initial/Name],
con.[Emergency Phone]
from [ultiprosqlprod1].[ultipro_crum].dbo.empPers eep WITH (NOLOCK)
inner join [ultiprosqlprod1].[ultipro_crum].dbo.empComp eec WITH (NOLOCK)
ON eep.eepEEID = eec.eecEEID
inner join #tmp_Company cmp WITH (NOLOCK)
ON eec.eecCOID = cmp.cmpCOID
inner join [ultiprosqlprod1].[ultipro_crum].dbo.PayGroup pgr WITH (NOLOCK)
ON eec.eecPayGroup = pgr.pgrPayGroup
left outer join [ultiprosqlprod1].[ultipro_crum].dbo.TrmReasn
on tchCode = eecTermReason
left join (select CAST(sum(isnull(eee.eeeYTDHrs,0.00))AS DECIMAL(18,2)) as [YTD Hours],
eeeEEID,
eeeCOID
from [ultiprosqlprod1].[ultipro_crum].dbo.EmpEarn eee with (NOLOCK)
group by eeeCOID,eeeEEID)eee
on eec.eecEEID = eee.eeeEEID
and eec.eecCOID = eee.eeeCOID
left join (SELECT eetCOID AS COID,
eetEEID AS EEID,
eetTaxCode AS TAXCODE,
eetFilingStatus AS FILINGSTATUS,
eetExemptions AS EXEMPTIONS,
eetExtraTaxDollars AS ADDITIONAL
FROM [ultiprosqlprod1].[ultipro_crum].dbo.empTax WITH (NOLOCK)
WHERE eetTaxCode = 'USFIT'
)eetFED
ON eec.eecCOID = eetFED.COID
and eec.eecEEID = eetFED.EEID
left join (SELECT eetCOID AS COID,
eetEEID AS EEID,
eetTaxCode AS TAXCODE,
eetFilingStatus AS FILINGSTATUS,
eetExemptions AS EXEMPTIONS,
eetExtraTaxDollars AS ADDITIONAL
FROM [ultiprosqlprod1].[ultipro_crum].dbo.empTax WITH (NOLOCK)
WHERE eetTaxCode like '%SIT'
AND eetIsWorkInTaxCode = 'Y'
)eetSIT
ON eec.eecCOID = eetSIT.COID
and eec.eecEEID = eetSIT.EEID
left outer join (SELECT eddCOID,
eddEEID,
eddEEBankName BankName1,
eddEEBankRoute BankRoute1,
eddAcct Account1,
EddAcctType AcctType1,
EddDepositRule DepositRule1,
EddAmtOrPct EddAmtOrPct1
FROM [ultiprosqlprod1].[ultipro_crum].dbo.EmpDirDp WITH (NOLOCK)
WHERE eddSequence = '99')edd
ON eec.eecCOID = edd.eddCOID
and eec.eecEEID = edd.eddEEID
left outer join (SELECT eddCOID,
eddEEID,
eddEEBankName BankName2,
eddEEBankRoute BankRoute2,
eddAcct Account2,
EddAcctType AcctType2,
EddDepositRule DepositRule2,
EddAmtOrPct EddAmtOrPct2
FROM [ultiprosqlprod1].[ultipro_crum].dbo.EmpDirDp WITH (NOLOCK)
WHERE eddSequence = '01')edd2
ON eec.eecCOID = edd2.eddCOID
and eec.eecEEID = edd2.eddEEID
left outer join (SELECT eddCOID,
eddEEID,
eddEEBankName BankName3,
eddEEBankRoute BankRoute3,
eddAcct Account3,
EddAcctType AcctType3,
EddDepositRule DepositRule3,
EddAmtOrPct EddAmtOrPct3
FROM [ultiprosqlprod1].[ultipro_crum].dbo.EmpDirDp WITH (NOLOCK)
WHERE eddSequence = '02')edd3
ON eec.eecCOID = edd3.eddCOID
and eec.eecEEID = edd3.eddEEID
left outer join (SELECT eecCOID,
eecEEID,
rtrim(eepNameLast) + ', ' +
rtrim(eepNameFirst) + ' ' +
isnull(rtrim(ltrim(eepNameMiddle)), '') AS [Supervisor]
FROM [ultiprosqlprod1].[ultipro_crum].dbo.EmpComp WITH (NOLOCK)
join [ultiprosqlprod1].[ultipro_crum].dbo.EmpPers with (NoLock)
on eeceeid = eepeeid)eec2
ON eec.eecSupervisorID = eec2.eecEEID
left outer join #tmp_Contacts con
on eep.eepEEID = con.ConEEID
order by [Client ID],
[Last Name],
[First Name]
drop table #tmp_Contacts
END
Timothy E Caldwell -
Crystal Report Source is MS SQL Stored Procedure Causes Login Popup
My environment is this: Visual Studio 2010 with CRforVS_13_0_9 installed. MS SQL Server is source for all report data. I use three different databases for all my reports.
I have a number of working CR reports that work fine in IDE and at runtime. However, one report works in IDE report designer Main Report Preview but does not work at runtime. Instead, it pops up the Database Login dialog box. This particular report is the only one that I have that uses a Stored Procedure for report source data. The following code is used for all reports. Can someone please help me to identify what is causing this anomaly?
' _Options contains parameter name and value pairs, if any
Dim oReport As New ReportDocument()
Dim FullReportName = "MA_CustomerUsage"
oReport.Load(FullReportName, OpenReportMethod.OpenReportByDefault)
DoCRLogin(oReport)
If _Options.ParameterList IsNot Nothing Then ImplementCRParameters(oReport)
With CrystalReportViewer
.SelectionFormula = _SelectionFormula
.ReportSource = oReport
.Zoom(zoomPageWidth)
.ShowParameterPanelButton = False
.ToolPanelView = ToolPanelViewType.None
End With
Private Sub DoCRLogin(ByVal oRpt As ReportDocument)
Dim oCRDb As Database = oRpt.Database
Dim oCRTables As Tables = oCRDb.Tables
Dim oCRTableLogonInfo As CrystalDecisions.Shared.TableLogOnInfo
Dim DatabaseName = oCRTables(0).LogOnInfo.ConnectionInfo.DatabaseName
Dim oCRConnectionInfo As New CrystalDecisions.Shared.ConnectionInfo() _
With {.DatabaseName = ScanInvenConStrSetting("Initial Catalog=", DatabaseName),
.ServerName = ScanInvenConStrSetting("Data Source=", DatabaseName),
.IntegratedSecurity = True}
For Each oCRTable As Table In oCRTables
oCRConnectionInfo.DatabaseName = oCRTable.LogOnInfo.ConnectionInfo.DatabaseName
oCRTableLogonInfo = oCRTable.LogOnInfo
oCRTableLogonInfo.ConnectionInfo = oCRConnectionInfo
oCRTable.ApplyLogOnInfo(oCRTableLogonInfo)
Next
End Sub
Private Sub ImplementCRParameters(ByRef oReport As ReportDocument)
Dim oparamFields = New ParameterValues
Dim oFieldDefs = oReport.DataDefinition.ParameterFields
For Each CRParameter In _Options.ParameterList
Dim oFieldDef = oFieldDefs("@" & CRParameter.Name)
Dim oDiscrete As New ParameterDiscreteValue()
oDiscrete.Value = CRParameter.Value.ToString
oparamFields.Add(oDiscrete)
oFieldDef.ApplyCurrentValues(oparamFields)
Next
End Sub
Private Function ScanInvenConStrSetting(ByVal Src As String, ByVal DBName As String) As String
Dim MyDB As String = String.Empty
Select Case DBName.ToUpper
Case "Database1".ToUpper
MyDB = Global.My.Settings.Database1ConnectionString
Case "Database2".ToUpper
MyDB = Global.My.Settings.DatabaseConnectionString
Case "Database3".ToUpper
MyDB = Global.My.Settings.Database3ConnectionString
End Select
Dim ndx1 As Integer = InStr(MyDB, Src, CompareMethod.Text) + Src.Length
Dim ndx2 As Integer = InStr(ndx1, MyDB, ";", CompareMethod.Text)
If ndx2 = 0 Then ndx2 = MyDB.Length
ScanInvenConStrSetting = Mid(MyDB, ndx1, ndx2 - ndx1)
End FunctionCheck what else is different with the report:
1) Connection type (ODBC vs. OLEDB, vs. Native, etc)
2) Check for subreports
3) Check that the report uses the SQL Native 10 Driver
Enable the report options "Verify on 1st refresh" and "Verify stored procedure on 1st refresh".
Comment out the db logon code as well as the parameter code and let the report prompt. Does that work?
If it does, add the db logon code but leave the param code commented out. Does that work?
- Ludek
Senior Support Engineer AGS Product Support, Global Support Center Canada
Follow us on Twitter -
Switching Data Source for a report with stored procedure
Post Author: ysbn
CA Forum: Data Connectivity and SQL
I've created a report and deployed it on a Crystal Server. The report is based on a certain stored procedure which also exists on other DB machines in my environment (Oracle machines). When I try to switch my report object to work with other machines (not the one originally used when the report was designed) the activation of the report fails. The error I see in the preview window is:
Error in File <my rpt file name>: Failed to retrieve data from the database. Details: [Database Vendor Code: 6550 ]
When I try the same thing with a report which is based on a view and not a stored procedure the switching of Data Source works perfectly.
Is there a problem switching between data sources from the server when the report is based on stored procedure? Are there any configurations I need to do in order to support this scenario?
Thanks!Hi everyone~
i am now facing the same problem
i am using CR2008 and Visual Studio 2008 c# to write a window program
because we have 2 db environment (one is production , the other one is development) so i have set a prarameter to switch db connection in c# code.
the database is Oracle, and the the report will connect to Oracle procedure (which it is stored in package) this procedure will return reference cursor, so the report will loop up this cursor to generate report.
at first time, it work fine when i open the report in CR2008 designer and point to dev database (ie datasource point to oracle procedure) . but when i want to deploy this win application to client and point to prod database, it show (vendor error 6550)
i found that i cannot change the datasource during runtime in c# code...
am i miss something in code? here attached a part of this code...
private void setDBLogonForReport(ConnectionInfo info, ReportDocument doc)
Tables myTables = doc.Database.Tables;
foreach (Table myTable in myTables)
TableLogOnInfo logOnInfo = myTable.LogOnInfo;
logOnInfo.ConnectionInfo = info;
logOnInfo.TableName = myTable.Name;
myTable.ApplyLogOnInfo(logOnInfo);
//myTable.Location = info.UserID + "." + "pkg_crystal_report." + myTable.Name;
//someone suggest i have to set the 'Location' for change the datasource, but i am not sure how to construct a
//string for point to oracle prcedure
i will check it freq ... hope any expert can give me some advice ~
thank you very much!!! -
How to encrypt the source code of stored procedures ?
Is it possible to encrypt the source code of the stored procedures so no one can read the content. I want to deliver a compiled code not the source
Database 8i and later
thanks in advanceWrap Utility<br>
<br>
Nicolas. -
Hi Guys,
SSIS 2012 ETL is failing only at one server (No BIDS) but running successfully from BIDS on different sever . In this ETL, I have used Stored Procedure in OLEDB Source.
Note: I have couple of ETLs developed in 2005 using same logic and upgraded to 2012, working perfectly.
I am getting Error Message:
SSIS
Error Code
DTS_E_OLEDBERROR.
An OLE DB
error has occurred.
Error code: 0x80004005.
An
OLE DB
record is available.
Source: "Microsoft OLE DB Provider for SQL Server"
Hresult: 0x80004005
Description: "Error converting data type varchar to datetime.".
Unable
to retrieve
column information
from the data
source. Make
sure your target
table in
the database is
available.
"OLE DB Source"
failed validation
and returned
validation status
"VS_ISBROKEN".
I tried below word around and found It is working perfectly.
I loaded data into a table (dbo.TEMP) using Stored procedure and then I used this dbo.TEMP table in OLEDB source and then found no issue.
MY SP Details: (This SP I am calling in OLEDB source of ETL) and when I run it from one server IT is working fine and when I run from ETL dedicated Server getting error: Guys Help me out.
USE
[TEST_DB]
GO
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
ALTER
PROCEDURE [DBO].[SP_TEST]
--EXEC [DBO].[SP_TEST] '2014-09-30','2014-10-01'
@FROMDATETIME
DATETIME,
@TODATETIME
DATETIME
AS
SET
NOCOUNT ON
BEGIN
DECLARE
@FROMDATEKEY INT,
@TODATEKEY INT,
SET
@FROMDATEKEY=
CONVERT(VARCHAR(10),@FROMDATETIME,112)
SET
@TODATEKEY=
CONVERT(VARCHAR(10),@TODATETIME,112)
IF 1 = 1
BEGIN
SELECT
CAST(NULL
AS DATETIME)
AS TXN_DATE
, CAST(NULL
AS DATETIME
) AS PROCESS_DATE
, CAST(NULL
AS money)
AS S1_AMT
, CAST(NULL
AS money)
AS S2_AMOUNT
, CAST(NULL
AS money)
AS S2_INVALID_AMOUNT
, CAST(NULL
AS money)
AS INVALID_MOVED_IN_VALID_S2_AMOUNT
, CAST(NULL
AS VARCHAR(20))
AS SYSTEM_ID
, CAST(NULL
AS money)
AS S3_AMT
END
SELECT
TXN_DATE
,PROCESS_DATE
,S1_AMT
,S2_AMOUNT
,S2_INVALID_AMOUNT
,INVALID_MOVED_IN_VALID_S2_AMOUNT
,SYSTEM_ID
S3_AMT
FROM
DBO.TABLE_1
WHERE TNX_DATE_KEY
BETWEEN @FROMDATEKEY
and @TODATEKEY
UNION
ALL
SELECT
TXN_DATE
,PROCESS_DATE
,S1_AMT
,S2_AMOUNT
,S2_INVALID_AMOUNT
,INVALID_MOVED_IN_VALID_S2_AMOUNT
,SYSTEM_ID
S3_AMT
FROM
DBO.TABLE_2
WHERE TNX_DATE_KEY
BETWEEN @FROMDATEKEY
and @TODATEKEY
UNION
ALL
SELECT
TXN_DATE
,PROCESS_DATE
,S1_AMT
,S2_AMOUNT
,S2_INVALID_AMOUNT
,INVALID_MOVED_IN_VALID_S2_AMOUNT
,SYSTEM_ID
S3_AMT
FROM
DBO.TABLE_3
WHERE TNX_DATE_KEY
BETWEEN @FROMDATEKEY
and @TODATEKEY
END
Data Source Mode: SQL Command for Variable
"EXEC [DBO].[SP_TEST] '"+ (DT_WSTR, 24) @[User::V_EXTRACT_FROM_DT] +"','"+ (DT_WSTR, 24) @[User::V_EXTRACT_TO_DT] +"'"
Where variable @[User::V_EXTRACT_FROM_DT] and @[User::V_EXTRACT_TO_DT] is defined as DATETIME
Thanks Shiven:) If Answer is Helpful, Please VoteHi,
Yes you are right. At one sever where I was getting error, DateTime was in USA format and Where It was running successfully was in AUS format.
I changed from USA to AUS and I did another changes:
Data Source Mode: SQL
Command
EXEC [DBO].[SP_TEST]
@FROMDATETIME = ?,
@TODATETIME = ?
and It is working fine.
Thanks Shiven:) If Answer is Helpful, Please Vote -
Stored Procedure used as a data source for an Apex report
Just wondering whether anyone has used a Stored Procedure as the data source for an Apex report. An option to select Stored Procedures(s) as the data source does not appear within the IDE (only displays Table, Views, Functions).
Do you have to return the definition of the Stored Procedure via a function ... if so, how is this done ?
Thank you.>
Welcome to the forum: please read the FAQ and forum sticky threads (if you haven't done so already), and update your profile with a real handle instead of "920338".
When you have a problem you'll get a faster, more effective response by including as much relevant information as possible upfront. This should include:
<li>Full APEX version
<li>Full DB/version/edition/host OS
<li>Web server architecture (EPG, OHS or APEX listener/host OS)
<li>Browser(s) and version(s) used
<li>Theme
<li>Template(s)
<li>Region/item type(s)
With APEX we're also fortunate to have a great resource in apex.oracle.com where we can reproduce and share problems. Reproducing things there is the best way to troubleshoot most issues, especially those relating to layout and visual formatting. If you expect a detailed answer then it's appropriate for you to take on a significant part of the effort by getting as far as possible with an example of the problem on apex.oracle.com before asking for assistance with specific issues, which we can then see at first hand.
Just wondering whether anyone has used a Stored Procedure as the data source for an Apex report. An option to select Stored Procedures(s) as the data source does not appear within the IDE (only displays Table, Views, Functions).
Do you have to return the definition of the Stored Procedure via a function ... if so, how is this done ? When asking a question about "reports" it's firstly essential to differentiate between standard and interactive reports. Standard reports can be based on tables, views, SQL queries, or PL/SQL function blocks that return the text of a SQL query. Interactive reports can only be based on a SQL query.
"Stored Procedures" are therefore not an option (unless you are using the term loosely to describe any PL/SQL program unit located in the database, thus including functions). What would a procedure used as the source of a report actually do? Hypothetically, by what mechanisms would the procedure (a) capture/select/generate data; and (b) make this data available for use in an APEX report? Why do you want to base a report on a procedure? -
Can't see my Oracle stored procedure in the avalable data source list
Post Author: Moori
CA Forum: Data Connectivity and SQL
Hello All,
I've created an Oracle stored procedure which I need to use it's returned data in my crystal report but I can't find it in the data source list.
I'm using the same schema & database and user as my sp was created on.
Please advise.
MooriJim (also Geoff and Hal)-
Still haven't solved this. Here's another try at a screenshot, showing just below this text for me, of my Library interface showing the C drive listed in the left panel and not showing the C drive contents. Only, as you said is intended, what is already in Lightroom.
I thought if I was not in "Catalog" I had been able, in the past, to select from anything in my C crive simply by opening that folder in the panel.
When I click import it is usually - from memory - to start the import of the already selected items. For a time that's what was happening from the above screen if I selected Import. It would apparently start re-importing the selected items and without presenting the usual familiar dialog asking about file naming, etc. Now, however, clicking Import bring up this:
Never saw this black horizontal dialog box before this situation arose. I was able to import but not as usual and I would like to get back the square (moreso at least) "white" dialog box. No clue what's going on or how to get bact to familiar ground. Ideas? -
Stored Procedure With Multiple Result Sets As Report Source : Crosspost
Hello Everyone,
I have an issue where i have created a stored procedure that returns multiple result sets
/* Input param = @SalesOrderID */
SELECT * FROM Orders TB1
INNER JOIN OrderDetails TB2 ON TB1.ID = TB2.ID
WHERE TB1.OrderID = @SalesOrderID
SELECT * FROM Addresses
WHERE Addresses.OrderID = @SalesOrderID AND Addresses.AddressType = 'Shipping'
SELECT * FROM Addresses
WHERE Addresses.OrderID = @SalesOrderID AND Addresses.AddressType = 'Billing'
This is just a quick sample, the actual procedure is a lot more complex but this illustrates the theory.
When I set the report source in Crystal X to the stored procedure it is only allowing me to add rows from the first result set.
Is there any way to get around this issue?
The reason that I would prefer to use a stored procedure to get all the data is simply performance. Without using one big stored procedure I would have to run at least 6 sub reports which is not acceptable because the number of sub reports could grow exponentially depending on the number of items for a particular sales order.
Any ideas or input would be greatly appreciated.
TIA
- Adam
P.S
Sorry for the cross post, I originally posted this question [here|/community [original link is broken];
but was informed that it might be the wrong forum
Edited by: Adam Harris on Jul 30, 2008 9:44 PMAdam, apologies for the redirect, but it is better to have .NET posts in one place. That way anyone can search the forum for answers. (and I do not have the rights to move posts).
Anyhow, as long as the report is created, you should be able to pass the datasets as:
crReportDocument.Database.Tables(0).SetDataSource(dataSet.Tables("NAME_OF_TABLE"))
Of course alternatively, (not sure if this is possible in your environment) you could create a multi-table ADO .NET dataset and pass that to the report.
Ludek -
Stored Procedure Help: Source does not have a runnable target
I'm an MS-SQL guy, so I'm fairly familiar with T-SQL syntax, but am having one heck of a time trying to take code I've written for SQL and transform it to work with Oracle.
Anyways, I'm using Oracle's SQL Developer, and I've got a stored procedure that calls the Alter Table statement and adds a column to it. I'm just trying to get this one to work before I move on to the other one's I have. I keep getting the message Source does not have a runnable target when I try running this command.
create or replace PROCEDURE rta_conv_addcolumn(rtatablename1 in varchar(20),
rtatablename2 in varchar(20),
rtacolumnname in varchar(256),
rtacolumninfo in varchar(256))
AS
DECLARE rtasql VARCHAR(4000);
BEGIN
IF EXISTS (SELECT * FROM user_tables WHERE table_name = rtatablename1)
AND NOT EXISTS (SELECT * FROM user_tab_columns WHERE column_name = rtacolumnname
AND table_name = rtatablename1)
AND NOT EXISTS (SELECT * FROM user_tab_columns WHERE column_name = rtacolumnname
AND table_name = rtatablename2)
Then rtasql:= 'ALTER TABLE ['+rtatablename2+'] ADD ' + rtacolumnname + ' ' + rtacolumninfo;
Execute (rtasql);
END rta_conv_addcolumn;
If I try compiling it I get the following messages, which don't make sense, since the syntax I'm using for declaring the input variables looks to be right.
Error(1,54): PLS-00103: Encountered the symbol "(" when expecting one of the following: := . ) , @ % default character The symbol ":=" was substituted for "(" to continue.
Error(2,29): PLS-00103: Encountered the symbol "(" when expecting one of the following: := . ) , @ % default character The symbol ":=" was substituted for "(" to continue.
Error(3,29): PLS-00103: Encountered the symbol "(" when expecting one of the following: := . ) , @ % default character The symbol ":=" was substituted for "(" to continue.
Error(4,29): PLS-00103: Encountered the symbol "(" when expecting one of the following: := . ) , @ % default character The symbol ":=" was substituted for "(" to continue.
Error(6,1): PLS-00103: Encountered the symbol "DECLARE" when expecting one of the following: begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> form current cursor external language The symbol "begin" was substituted for "DECLARE" to continue.
Error(15,5): PLS-00103: Encountered the symbol "RTA_CONV_ADDCOLUMN" when expecting one of the following: ifWhat table you want to add the column to? rtatablename1 or rtatablename2? I assumed 1 for now.
I tried to preserve your code structure so you can familiarize with it.
This piece should work, but you need to make sure you validate the parameters you concatenate to your strings when you use dynamic SQL.
That's when SQL injection takes place: when you trust the parameters you are receiving and don't validate them.
Also remember that DDL statements execute an implicit commit. Any previous DML operations you have pending will be commited by
this EXECUTE IMMEDIATE call if it succeeds.
I'd recommend some reading at the Oracle docs regarding those topics and the invoker's vs definer's rights for procedures.
It basically means that as a default behaviour, the user running the procedure "borrows" the rights and privileges of the procedure owner,
and that guy is usually super-privileged.
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10472/subprograms.htm#LNPLS00809
CREATE OR REPLACE PROCEDURE rta_conv_addcolumn
rtatablename1 IN VARCHAR,
rtatablename2 IN VARCHAR,
rtacolumnname IN VARCHAR,
rtacolumninfo IN VARCHAR
) AS
rtasql VARCHAR(4000);
v_count NUMBER;
BEGIN
SELECT COUNT(*)
INTO v_count
FROM user_tables
WHERE table_name = upper(rtatablename1)
AND NOT EXISTS (SELECT *
FROM user_tab_columns
WHERE column_name = upper(rtacolumnname)
AND table_name = upper(rtatablename1))
AND NOT EXISTS (SELECT *
FROM user_tab_columns
WHERE column_name = upper(rtacolumnname)
AND table_name = upper(rtatablename2));
IF v_count > 0
THEN
-- is it to the rtablename1 or 2 you want to add this column to?
rtasql := 'ALTER TABLE ' || rtatablename1 ||' ADD ' || rtacolumnname || ' ' || rtacolumninfo;
EXECUTE IMMEDIATE rtasql;
END IF;
END rta_conv_addcolumn;Edited by: fsitja on Dec 11, 2009 11:21 PM -
I am using VS 2012 and BizTalk 2013 and attempting to deploy an application to BizTalk when I get these errors:
Error 47
at Microsoft.BizTalk.Deployment.Assembly.BtsMap.Save()
at Microsoft.BizTalk.Deployment.Assembly.BtsArtifactCollection.Save()
at Microsoft.BizTalk.Deployment.Assembly.BtsAssembly.Save(String applicationName)
at Microsoft.BizTalk.Deployment.BizTalkAssembly.PrivateDeploy(String server, String database, String assemblyPathname, String applicationName)
at Microsoft.BizTalk.Deployment.BizTalkAssembly.Deploy(Boolean redeploy, String server, String database, String assemblyPathname, String group, String applicationName, ApplicationLog log)
0 0
Error 49
Failed to add resource(s). Change requests failed for some resources. BizTalkAssemblyResourceManager failed to complete end type change request. Failed to deploy map "XXX.BTS2013.XXX.Maps.map_XXXX_R01_InsLabProc".
Error saving map. Stored procedure returned non-zero result. Check if source and target schemas are present. Error saving map. Stored procedure returned non-zero result. Check if source and target schemas are present.
0 0
Error 46
Failed to deploy map "XXX.BTS2013.XXX.Maps.map_XXXX_R01_InsLabProc".
Error saving map. Stored procedure returned non-zero result. Check if source and target schemas are present.
0 0
I also tried to Import a MSI file from our test environment to see if that would work...got the same errors. After spending hours (not kidding) looking for an answer, all I could find is that a hotfix would work. So, I got the hotfix from Microsoft
Support and applied it then rebooted. Still getting the same errors. I'm absolutely at a stand still. Interesting that I got this application to deploy yesterday and then the next time I deployed it I started getting these errors. I'm
ready to pull my hair out!
Is there an answer for this out there somewhere? Any help would be appreciated.
Thanks,
DaveHi Dave,
Which hotfix have you applied? I don't think a hotfix of this issue is available for BizTalk 2013 yet. You should create a
support ticket with Microsoft to get a solution.
If this answers your question please mark as answer. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply. -
Please help - Can not use stored procedure with CTE and temp table in OLEDB source
Hi,
I am going to create a simple package. It has OLEDB source , a Derived transformation and a OLEDB Target database.
Now, for the OLEDB Source, I have a stored procedure with CTE and there are many temp tables inside it. When I give like EXEC <Procedure name> then I am getting the error like ''The metadata could not be determined because statement with CTE.......uses
temp table.
Please help me how to resolve this ?you write to the temp tables that get created at the time the procedure runs I guess
Instead do it a staged approach, run Execute SQL to populate them, then pull the data using the source.
You must set retainsameconnection to TRUE to be able to use the temp tables
Arthur My Blog -
Pl/sql stored procedure as data source
Hi I am a newbie
I have a pl/sql stored procedure inside a package which uses a SYS_REFCURSOR as it returns a result set.
Can I use this procedure as a Data Source using the wizard?
When I use the Data source configuration wizard I get a list with only the tables and views.I don't see any stored procedures
ThanksHere is a sample procedure..
CREATE OR REPLACE PROCEDURE TEST_USER.TEST_PROCEDURE1 ( p_cursor OUT SYS_REFCURSOR)
AS
BEGIN
OPEN p_cursor FOR
SELECT C1,C2
FROM TEST_USER.test_table4procedure;
END;
When I execute the procedure, I see the results. The goal is to put the results of the procedure into a different table.
Unfortunately I have close to 0 zero knowledge in both java and jython.
Please help.
NOTE: For the life of me, I have no clue why the "other" system wants it to be a stored procedure, when we can use a view/table and make everybody's life easier (aka K.I.S.S.)
Regards,
Dave Null
Maybe you are looking for
-
In BDCs, after adding one field to the screen, which one is the better proc
Hi, My client requirement In BDCs, after recording the legacy data by using MM01, After some time adding one field to the screen, How can we record the for the new field. If any one knows pls help me total process. Warm regards, Venkat.
-
How To Arrange Folders ??
Im wondering if this is possible on my macbook as I'm sick of changing everything manually. Please excuse the poor explanation but i will try my best to explain what my problem is. When i create a folder and put 20/30 jpeg pictures into it they are n
-
Help!!! Someone uninvited on my phone
Today I notice a new name in my favorites. It's Arabic, so I can't say what it is. But there is a Facebook address and an IM address, the same. I deleted it from favorites and tried to delete it from my contacts, but it won't go. Help!!!
-
Transfer of emp from one PA to another PA in same comp or diff comp code
Dear Members, I have been struck with new requirement from client. During transfer case of employees from one PA to another PA (personal Area) the pernr doesnt changes within same company code or different company code. My client needs if a employee
-
I bought my iPod touch 5th gen from Walmart less than a month ago, and the charger is in the early stages of being broken (needing to be in a certain position to charge). Should I take it into the Apple Store or Walmart?