How to automate DDL statements in batch or stored procedure?

I'd like to write a start file or stored procedure to create synonyms for all tables owned by the current user as well as any to which the user has been granted access. However, no DDL statement like create synonyms is allowed in stored procedures. How can I solve this problem?
I am very new to Oracle, can anyone recommend a site that publishes lots of PL/SQL scripts?

Phyllis,
It looks like a problem with permissions, as Narayan Archarya said.
In order to test your code, I connected as user scott, copied your code, put two hyphens in front of the line that begins with execute immediate, compiled it, set serveroutput on, and executed it as:
SQL> EXECUTE create_synonyms ('scott')
It worked properly, displaying:
cursor is opened.
stmt_str = CREATE SYNONYM ADDRESSES FOR SCOTT.ADDRESSES
rowcount = 1
and continued in this manner, incrementing the row counts and displaying a stmt_str for each table. This confirms that there is no problem with the code. It has got to be a problem with privileges.
To test the theory that it is a problem with privileges, I connected as system manager and created user abc, granting connect, resource, and create table to abc. I then connected as abc and created a table named abc. I then recompiled the create_synonyms, set serverouput on, and I executed it as:
SQL> EXECUTE CREATE SYNONYMS ('ABC')
Once again it worked properly, displaying:
cursor is opened.
rowcount = 1
stmt_str = CREATE SYNONYM ABC FOR ABC.ABC
rowcount = 1
end
PL/SQL procedure succesfully completed.
I then tried executing it as (while still connected as user abc):
SQL> EXECUTE create_synonyms ('scott')
and I got:
cursor is opened.
rowcount = 0
end
PL/SQL procedure succesfuly completed.
I tried the reverse, by connecting as user scott and executing as:
SQL> EXECUTE create_synonyms ('abc')
and got the same:
cursor is opened.
rowcount = 0
end
PL/SQL procedure succesfuly completed.
I then connected as user abc and entered:
SQL> GRANT SELECT ON ABC TO SCOTT;
Then I connected as scott, set serveroutput on, and executed again as:
SQL> EXECUTE create_synonyms ('ABC')
and it worked:
cursor is opened.
rowcount = 1
stmt_str = CREATE SYNONYM ABC FOR ABC.ABC
rowcount = 1
end
PL/SQL procedure successfully completed.
So, the conclusion is that there is a problem with privileges, probably related to the user executing the procedure and/or the user creating the procedure not having privileges to the tables created by the user that corresponds to the table_owner parameter passed to the procedure.
This may not be the whole problem as far as permissions, but it is probably part of it.
null

Similar Messages

  • How do I return two values from a stored procedure into an "Execute SQL Task" within SQL Server 2008 R2

    Hi,
    How do I return two values from a
    stored procedure into an "Execute SQL Task" please? Each of these two values need to be populated into an SSIS variable for later processing, e.g. StartDate and EndDate.
    Thinking about stored procedure output parameters for example. Is there anything special I need to bear in mind to ensure that the SSIS variables are populated with the updated stored procedure output parameter values?
    Something like ?
    CREATE PROCEDURE [etl].[ConvertPeriodToStartAndEndDate]
    @intPeriod INT,
    @strPeriod_Length NVARCHAR(1),
    @dtStart NVARCHAR(8) OUTPUT,
    @dtEnd NVARCHAR(8) OUTPUT
    AS
    then within the SSIS component; -
    Kind Regards,
    Kieran. 
    Kieran Patrick Wood http://www.innovativebusinessintelligence.com http://uk.linkedin.com/in/kieranpatrickwood http://kieranwood.wordpress.com/

    Below execute statement should work along the parameter mapping which you have provided. Also try specifying the parameter size property as default.
    Exec [etl].[ConvertPeriodToStartAndEndDate] ?,?,? output, ? output
    Add a script task to check ssis variables values using,
    Msgbox(Dts.Variables("User::strExtractStartDate").Value)
    Do not forget to add the property "readOnlyVariables" as strExtractStartDate variable to check for only one variable.
    Regards, RSingh

  • Error : The label 'http' has already been declared. Label names must be unique within a query batch or stored procedure.

    Hi all,
        I have created one SP for sending mail with formatting the HTML code inside script whenever i am individually declaring it and printing its expected but the problem at time of executing SP its giving error like this
    Msg 132, Level 15, State 1, Line 47
    The label 'http' has already been declared. Label names must be unique within a query batch or stored procedure.
    what is the possibilities to overcome this problem follwing is my stored procedure code 
    ALTER PROCEDURE [dbo].[USP_DataLoadMailsend_essRules]
    AS
    BEGIN
    SET NOCOUNT ON;
    SET XACT_ABORT ON;
    BEGIN TRY
    ---BEGIN TRANSACTION T1
    DECLARE @packagelogid INT
    DECLARE @batchlogid INT
    DECLARE @packagestatus CHAR(2)
    select @batchlogid =19870
    --print(@batchlogid)
    DECLARE @script VARCHAR(MAX)
    DECLARE @tableHTML VARCHAR(MAX)
    DECLARE @mailheader VARCHAR(50)
    DECLARE @count INT
    DECLARE @recipients1 VARCHAR(50)
    DECLARE @subject1 VARCHAR(200)
    DECLARE @sql VARCHAR(MAX)
    Declare @UserId varchar(Max)
    Declare @Information varchar(max)
    Declare @TableHTML1 varchar(max)
    Declare @TableHTML2 varchar(max)
    SET @mailheader = ''
    SET @mailheader = (select case
    WHEN FileUpload = 'F'
    THEN 'BussinessRules is Aborted'
    WHEN (InRule = 'S')
    AND (
    SELECT sum(isnull(ErrorRecords, 0)) tot
    FROM abc.FileUploadSummary z
    WHERE z.BatchId = bts.BatchId
    GROUP BY BatchId
    ) > 0
    THEN 'BussinessRules is Processed with Errors'
    WHEN InRule = 'F'
    THEN 'BussinessRules is Failed'
    WHEN (InRule = 'S')
    AND (
    SELECT sum(isnull(ErrorRecords, 0)) tot
    FROM abc.FileUploadSummary z
    WHERE z.BatchId = bts.BatchId
    GROUP BY BatchId
    ) = 0
    THEN 'BussinessRules is Succeeded'
    end
    from abc..BatchStatus bts where BatchId=@batchlogid)
    /* Selecting Person Mail as Recipient */
    SELECT TOP 1 @recipients1 = EmailId FROM abc.PersonEmail
    WHERE PersonId = ( SELECT TOP 1 personid FROM abc.FileUploadSummary WHERE BatchId = @batchlogid )AND EmailTypeId = 1
    /* Selecting UserId*/
    select top 1 @UserId=loginid from abc.FUS where BatchId=@batchlogid
    /*Selecting Information about the Status */
    Set @Information=
    (select case
    WHEN FileUpload = 'F'
    THEN 'BussinessRules is Aborted'
    WHEN (InRule = 'S')
    AND (
    SELECT sum(isnull(ErrorRecords, 0)) tot
    FROM abc.FileUploadSummary z
    WHERE z.BatchId = bts.BatchId
    GROUP BY BatchId
    ) > 0
    THEN 'BussinessRules is Processed with Errors'
    WHEN InRule = 'F'
    THEN 'BussinessRules is Failed'
    WHEN (InRule = 'S')
    AND (
    SELECT sum(isnull(ErrorRecords, 0)) tot
    FROM abc.FileUploadSummary z
    WHERE z.BatchId = bts.BatchId
    GROUP BY BatchId
    ) = 0
    THEN 'BussinessRules is Succeeded'
    end + N' <br> <B>BatchId= '+ convert(varchar(250),(select @batchlogid)) +'</B>'
    from abc..BatchStatus bts where BatchId=@batchlogid )
    /*Selecting the Error Reason*/
    if exists (select 1 from BatchStatus where BatchId=@batchlogid and ( InRule='f'))
    begin
    set @TableHTML1 = '<table border=1><tr><th>Sr.No.</th><th><P>Error Reason :</th></tr>'+
    cast((select td= ROW_NUMBER()over (order by (select 1)),'',
    td=isnull(e.ErrorDescription, '')
    from abc.x.tbPackageErrorLog e --50594
    join abc.x.tbPackageLog p -- 10223
    on p.PackageLogID=e.PackageLogID
    where p.BatchLogID= @batchlogid FOR XML PATH('tr'), TYPE )
    as NVarchar(max)) +'</table>'
    -- print @tableHTML
    if not exists (select 1 from BatchStatus where BatchId=@batchlogid and ( InRule='f'))
    set @TableHTML2 = 'Error Reason :N/A'
    end
    -- insert into #tmp values ( @TableHTML1)
    --select * from #tmp
    Set @tableHTML= 'Hello '+@UserId+', <br>Information:'+isnull(@Information,'') +
    '<Table Border=1><Tr><th>Sr No</th><th>Uploaded files </th>:'+
    CAST ((select td= ROW_NUMBER()over(order by f.FileUploadId), '',
    td = f.TableName , ''
    from abc.FileUploadSummary F where BatchId=@batchlogid
    FOR XML PATH('tr'), TYPE ) AS NVARCHAR(max) )
    +'</table>'+
    'Error Reason :'+isnull(isnull(@TableHTML1,'')+ isnull(@TableHTML2,''),'N/A')+ --concat (isnull(@TableHTML1,''),isnull(@TableHTML2,'')
    '<br> Please login to Your Account for further Details..!'
    +'<br>@Note: This is system generated message, Do not reply to this mail. <br>Regards,<br>'+
    'Admin'
    print @tableHTML
    SET @sql = ' EXEC msdb.dbo.sp_send_dbmail @profile_name = ''DBA_mail_test''
    ,@recipients = ''' + isnull(@recipients1,'''') + ''',@subject = ''' + isnull(@mailheader,'''') + ''',
    @body = ''' +isnull(@tableHTML,'''')+ ''',
    @body_format = ''HTML'''
    Exec(@sql)
    END TRY
    BEGIN CATCH
    PRINT error_message()
    -- Test whether the transaction is uncommittable.
    -- IF (XACT_STATE()) = - 1
    -- ROLLBACK TRANSACTION --Comment it if SP contains only select statement
    DECLARE @ErrorFromProc VARCHAR(500)
    DECLARE @ErrorMessage VARCHAR(1000)
    DECLARE @SeverityLevel INT
    SELECT @ErrorFromProc = ERROR_PROCEDURE()
    ,@ErrorMessage = ERROR_MESSAGE()
    ,@SeverityLevel = ERROR_SEVERITY()
    --INSERT INTO dbo.ErrorLogForUSP (
    -- ErrorFromProc
    -- ,ErrorMessage
    -- ,SeverityLevel
    -- ,DateTimeStamp
    --VALUES (
    -- @ErrorFromProc
    -- ,@ErrorMessage
    -- ,@SeverityLevel
    -- ,GETDATE()
    END CATCH
    END
    please help me to solve this problem
    Niraj Sevalkar

    This is no string http in your procedure. Then again the error message points to a line 47 outside a stored procedure. I can't tell it is outside, since there is no procedure name.
    But I see that you have this piece of dynamic SQL:
    SET @sql = ' EXEC msdb.dbo.sp_send_dbmail @profile_name = ''DBA_mail_test''
    ,@recipients = ''' + isnull(@recipients1,'''') + ''',@subject = ''' + isnull(@mailheader,'''') + ''',
    @body = ''' +isnull(@tableHTML,'''')+ ''',
    @body_format = ''HTML'''
     Exec(@sql)
    Why is this dynamic SQL at all? Why not just make plain call to sp_send_dbmail?
     EXEC msdb.dbo.sp_send_dbmail @profile_name = 'DBA_mail_test'
    ,@recipients = @recipients1, @subject = @mailheader, @body = @tableHTML
    Erland Sommarskog, SQL Server MVP, [email protected]

  • How to set pdn12.trancat mandatory in this stored procedure?

    How can i make PDN12.transcat in this Stored Procedure
    USE [zIRC DEMO]
    GO
    /****** Object:  StoredProcedure [dbo].[SP_CHECK_MANDATORY_IN_OPDN]    Script Date: 03/07/2014 10:37:54 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[SP_CHECK_MANDATORY_IN_OPDN]
      @list_of_cols_val_tab_del NVARCHAR(255), @error_message NVARCHAR(255) OUTPUT
    AS
    BEGIN
    --invoice type
      select
      @error_message='In header line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND isnull(OPDN.U_InvType,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND isnull(OPDN.U_InvType,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Invoice Type is missing'
    -- num at card
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In header line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.NumAtCard,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.NumAtCard,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Vendor ref. number is missing'
      END
    -- transporter
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.U_Transport,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.U_Transport,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Transporter is missing'
      END
    --dealer
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.U_dealer,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(OPDN.U_Dealer,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Dealer is missing'
      END
    --base price
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_BasePrice,0)=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_BasePrice,0)=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Base Price is missing'
      END
    --taxcode
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(PDN1.TaxCode,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S','L') AND isnull(PDN1.TaxCode,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Taxcode is Missing'
      END
    -- ed rate
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_EDRate,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_EDRate,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Excice Duty Rate is missing'
      END
    -- ed duty
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_EDuty,0)=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('M','D','S') AND isnull(PDN1.U_EDuty,0)=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Excice Duty is missing'
      END
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND ISNULL(PDN1.U_MfgInvNo,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND ISNULL(PDN1.U_MfgInvNo,'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Mfg. invoice number is missing'
      END
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND isnull(convert(nvarchar(10),U_MfgInvDt,112),'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND isnull(convert(nvarchar(10),U_MfgInvDt,112),'')=''
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Mfg. invoice date is missing'
      END
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND PDN1.U_MfgQty=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND PDN1.U_MfgQty=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Mfg. invoice Quantity is missing'
      END
      if(ISNULL(@error_message,'')='')
      BEGIN
      select
      @error_message='In line number(s), '+ substring
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      where
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND PDN1.U_MfgValue=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ),1
      ,LEN((
      select CONVERT(char(2),PDN1.LineNum)+','
      from
      OPDN
      inner join PDN1 on OPDN.DocEntry=PDN1.DocEntry
      WHERE
      OPDN.DocEntry=@list_of_cols_val_tab_del AND OPDN.DocType='I' AND OPDN.U_InvType in ('D','S') AND PDN1.U_MfgValue=0
      order by
      PDN1.LineNum FOR XML PATH ('')
      ))-1
      )+' Mfg. Assessble value is missing'
      END
      if(ISNULL(@error_message,'')<>'')
      BEGIN
      return -1
      END
      else
      begin
      return 0
      end
    END

    Hello Nabil
    Could you explain what is the point of making PDN12.Trancat mandatory? I am asking this because at my end that field has got NULL value in all PDN12 table entries, and I am not sure if this field can be updated manually when creating a Good Receipt PO. Considering this, it seems that by making this field mandatory TN will block all Good Receipts from addition.
    Regards

  • How to Generate DDL Statement for PSAPROLL Tablespace on Oracle9i-HP_UX

    Hi,
    I am having SAP R3 46C installed with Oracle 9i on HP_UX 11i system.
    I want to generate required DDL statements for PSAPROLL Tablespace/Rollback Segments as Backup/recovery purpose, before converting it into PSAPUNDO.
    Its easy to find & store required DDL statements using OEM. But, I am not able to locate oemapp  (under $ORACLE_HOME/bin directory) application in the installation.
    The current patch level of installed oracle is
    I want to start OEM in HP_UX system, if it is possible.
    otherwise,
    I want to know the other alternatives to generate the required DDL statements.
    Thanks in advance.
    Regards,
    Bhavik G. Shroff

    Hi Stefan,
    On windows Platform it is very easy to get DDL info for any object of database.
    But, I was not able to start OEM in HP_UX system.
    I have done my job complete using this good package of Oracle9i, in this way.
    SQL> SET heading off
    SQL> SET long 10000
    SQL> SET pages 100
    SQL> SELECT dbms_metadata.get_ddl(u2019TABLESPACEu2019,'PSAPROLLu2019)
    FROM DBA_TABLESPACES;
    O/P:
    CREATE TABLESPACE "PSAPROLL" DATAFILE
    '/oracle/RQ1/sapdata1/roll_1/roll.data1' SIZE 681574400 REUSE ,
    '/oracle/RQ1/sapdata1/roll_2/roll.data2' SIZE 3145719808 REUSE
    LOGGING ONLINE PERMANENT BLOCKSIZE 8192
    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1048576 SEGMENT SPACE MANAGEMENT MANUAL
    SQL> SELECT dbms_metadata.get_ddl(u2019ROLLBACK_SEGMENTu2019,'PRS_0u2019)
    FROM DBA_SEGMENTS;
    CREATE ROLLBACK SEGMENT "PRS_0" TABLESPACE "PSAPROLL"
    STORAGE(INITIAL 10485760 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 32765
    Also follow this useful links:
    [DDL Generation--Oracle's Answer to Save You Time and Money|http://www.dbasupport.com/oracle/ora9i/DDLgen2.shtml]
    [DDL Generation--Oracle's Answer to Save You Time and Money|http://www.dbasupport.com/oracle/ora9i/DDLgen3.shtml]
    Good.
    Thanks a lot.

  • How Create a Global Temporary Table inside a Stored Procedure?

    Hi...
    I need to create a Global Temporary Table inside a Stored
    Procedure....
    I have no idea how to do that....
    Please....if u can send me a sample, send to me....
    Thanks a lot

    there are many ways to do this..
    one u can use dbms_utility package to run ddl statements like
    for ex:
    declare
    t varchar2(200):='order_no';
    v number;
    begin
    --dbms_utility.exec_ddl_statement('select '||t||' into '||v||'
    from
    --ordermaster where rownum=1');
    dbms_utility.exec_ddl_statement('create table cvt(t number)');
    dbms_output.put_line(v);
    end;
    but the actual method(recommended) involves a bit coding using
    dbms_sql package you will find examples on technet or metalink
    to use this package..
    I hope this helps
    Narendra

  • How to use Bpel output as input in stored procedure

    I am a SOA beginner. The scenario is to use the output from a BPEL process in a stored procedure as input and validate it against the data in the database. The data received from BPEL is compared with fields from different tables.
    It is basically a business process data validation.
    Will the output of BPEL be a Xml file and how it can b used in query of a procedure?
    Edited by: 869091 on Jun 29, 2011 12:14 AM

    The output from the BPEL process will be in XML format.
    Your requirement is not clear, please state it properly what are you trying to do.
    -Yatan

  • How to fetch data to APEX Report using stored procedure?

    hi all,
    i am making a report in APEX. user selects two dates and clicks GO button - i have a Stored Procedure linked to that result region so Stored Procedure gets called.
    my stored procedure does the following -
    using specified dates (IN) i do query and put data into a table (this table has been created only for this report) -
    i want to show all these data i entered into the table on my APEX report in the same procedure call. can i use ref cursor to return? how to do that?
    currently, i use another button in APEX which basically fetches all data from table. basically, user clicks one button to generate report and then another button to get report. which is not desirable at all :(
    i m using APEX      3.1.2.00.02 and Oracle 10 database.
    pls let me know if you need further clarification of the problem. thanks in advance.
    regards,
    probashi
    Edited by: porobashi on May 19, 2009 2:53 PM

    Thanks Tony.
    I am not sure what you meant by >> change the report to be based off of a query returning sql statement, no need to keep that table around.... >>
    Here's my stored procedure
    create or replace
    PROCEDURE ABC_PROC (
    START_DATE IN DATE,
    END_DATE IN DATE
    AS
    RULE_REC MTG_OFFICER_FORECAST%ROWTYPE;
    TYPE REF_CURSOR IS REF CURSOR;
    TCUR REF_CURSOR;
    BEGIN
    DELETE FROM ABC_REPORT;
    OPEN TCUR FOR
    SELECT ABC_FORECAST.*
    from MTG_OFFICER_FORECAST , MTG_USERS
    WHERE MTG_OFFICER_FORECAST.NBR_OFFICER = MTG_USERS.NBR_OFFICER AND
    MTG_OFFICER_FORECAST.NBR_INSTITUTION = MTG_USERS.NBR_INSTITUTION;
    LOOP
    FETCH TCUR INTO RULE_REC;
    EXIT WHEN TCUR%NOTFOUND;
    INSERT INTO ABC_REPORT( NBR_OFFICER, OFFICER_NAME, FORECAST_NBR_LOANS, FORECAST_LOAN_AMT, FORECAST_FEES,
    ACTUAL_NBR_LOANS, ACTUAL_LOAN_AMT, ACTUAL_FEES, RATIO_NBR_LOANS, RATIO_LOAN_AMT, RATIO_FEES, NBR_INSTITUTE )
    VALUES ( RULE_REC.NBR_OFFICER, RULE_REC.NAME_LOAN_OFFICER, RULE_REC.NBR_LOANS, RULE_REC.AMT_LOAN, RULE_REC.AMT_FEES,
    ACTUAL_NBR_LOANS, ACTUAL_LOAN_AMOUNT, ACTUAL_FEES, SUCCESS_RATIOS_NBR_LOANS_PERC, SUCCESS_RATIOS_LOAN_AMT_PERC, SUCCESS_RATIOS_FEES_PERC, RULE_REC.NBR_INSTITUTION );
    END LOOP;
    CLOSE TCUR;
    END ABC_PROC;
    Thanks,
    Probashi
    Edited by: porobashi on Jun 2, 2009 11:43 AM

  • PLS-00201 error occurs when batching a stored procedure in SQL*Plus

    I have a batch file to run a stored procedure and spool the results to file. When I enter the commands manually in sql*plus the output works fine and my results are spooled to the output file. But when I run the same commands in the batched script I get an error.
    Any ideas?
    Stored Procedure:
    create or replace procedure MMP( p_cursor in out SYS_REFCURSOR)
    as
    begin
    open p_cursorfor select name, id from table;
    end;
    batch file 1:
    sqlplus -S user/pw@REPORTDV @sp_output_spooled.sql
    script file sp_output_spooled.sql
    Pasting these commands directly to the SQL*Plus command prompt spools the result set to file as expected.
    set colsep '|'
    set echo off
    set feedback off
    set termout off
    set heading off
    set linesize 9000
    set pagesize 0
    set trimspool on
    set headsep off
    spool output.TXT
    var rc refcursor
    execute MMP(:rc)
    print rc
    spool off
    exit
    The errors printed to output.TXT file after the batch is run and error occurs:
    BEGIN MMP(:rc); END;
    ERROR at line 1:
    ORA-06550: line 1, column 8:
    PLS-00201: identifier 'MMP' must be declared
    ORA-06550: line 1, column 8:
    PL/SQL: Statement ignored
    ERROR:
    ORA-24338: statement handle not executed
    SP2-0625: Error printing variable "rc"

    Hi,
    Your code worked fine for me.
    Is MMP procedure owned by the same user that is running the batch file or does it have proper privileges and synonym?
    vr,
    Sudhakar

  • How to dynamically create sqlldr control file using stored procedure

    I am trying to dynamically create the control file (.ctl) and execute the same using a stored procedure.I would be passing the file name as a parameter to this procedure. How do I go about doing this?
    The control file has the following structure. The file name (mktg) varies and is passed as an input to the stored procedure.
    SPOOL mktg.ctl
    LOAD DATA
    INFILE 'mktg.csv'
    INTO TABLE staging
    FIELDS TERMINATED BY ','
    TRAILING NULLCOLS
    (COMPANY_NAME,
    ADDRESS,
    CITY,
    STATE,
    ZIP)
    SPOOL OFF ;
    sqlldr scott/tiger CONTROL= mktg.ctl LOG=mktg.log BAD=mktg.bad

    We are using oracle 9i rel 2.
    I have not had much success with the creation of log and bad files using external tables when they are being used within a dynamic sql.
    Plz check this:
    Re: problems related to data loads from excel, CSV files into an oracle 9i db

  • How to view the returned data from a stored procedure in TOAD?

    Hi,
    I created ref cursor in the stored procedure to return data. The stored procedure works fine, just want to view the result in TOAD. The BEGIN... EXEC... END can execute the stored procedure, but how to make the result display?
    Thanks!

    Right click the editor and choose
    "Prompt For Substitution Variables".
    Run for example the following code:
    DECLARE
    PROCEDURE p (cur OUT sys_refcursor)
    AS
    BEGIN
    OPEN cur FOR
    SELECT *
    FROM DUAL;
    END p;
    BEGIN
    p (:cur);
    END;
    The result will display in Toad's Data Grid!
    Regards Michael

  • How to pass the parameter values to the stored procedure from java code?

    I have a stored procedure written in sqlplus as below:
    create procedure spInsertCategory (propertyid number, category varchar2, create_user varchar2, create_date date) AS BEGIN Insert into property (propertyid, category,create_user,create_date) values (propertyid , category, create_user, create_date); END spInsertCategory;
    I am trying to insert a new row into the database using the stored procedure.
    I have called the above procedure in my java code as below:
    CallableStatement sp = null;
    sp = conn.prepareCall("{call spInsertCategory(?, ?, ?, ?)}");
    How should I pass the values [propertyid, category, create_user, create_date) from java to the stored procedure?[i.e., parameters]
    Kindly guide me as I am new to java..

    Java-Queries wrote:
    I have a stored procedure written in sqlplus as below:FYI. sqlplus is a tool from Oracle that provides a user interface to the database. Although it has its own syntax what you posted is actually PL/SQL.

  • Why doesn't SSRS like an IF Statement in my SQL Stored Procedure???

    I have multiple IF Statements at the end of my SQL Stored Procedure Process that utilizes a @ReportTypeName Parameter to produce the chosen report result set
    IF @ReportTypeName = 'HMO-POS New To HFHP - No Prior Year Member Spans'
    BEGIN
    SELECT DISTINCT
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Member Contract Nbr],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Member Subscriber Member Nbr],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Pkg],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Division Nbr],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER EFF DATE],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER NBR],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER FIRST NAME],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER LAST NAME],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Broker Name],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER ADDRESS 1],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER CITY],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER STATE],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER ZIPCODE],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER PHONE1],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER PHONE2],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER PHONE3],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER EMAIL],
    CONVERT(VARCHAR,CAST(CONVERT(VARCHAR, [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER YMDBIRTH]) AS DATETIME),101) AS [INDV MEMBER BirthDate],
    FLOOR((CAST (GETDATE() AS INTEGER) - CAST(CONVERT(DATETIME, CONVERT(CHAR(8), [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER YMDBIRTH])) AS INTEGER)) / 365.25) AS [INDV MEMBER AGE]
    FROM [#TempTable_Distinct_Individual_Member_All_Info]
    WHERE (CHARINDEX('HMO',LTRIM(RTRIM([#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name])),1) > 0
    OR CHARINDEX('POS',LTRIM(RTRIM([#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name])),1) > 0)
    AND [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER NBR] NOT IN
    (SELECT [#TempTable_Distinct_Individual_Member_Prior_Year_Spans].[INDV MEMBER NBR]
    FROM [#TempTable_Distinct_Individual_Member_Prior_Year_Spans])
    ORDER BY [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER NBR]
    END
    IF @ReportTypeName = 'HMO-POS Renewals'
    BEGIN
    SELECT DISTINCT
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Member Contract Nbr],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Member Subscriber Member Nbr],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Pkg],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Division Nbr],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER EFF DATE],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER NBR],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER FIRST NAME],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER LAST NAME],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV Broker Name],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER ADDRESS 1],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER CITY],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER STATE],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER ZIPCODE],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER PHONE1],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER PHONE2],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER PHONE3],
    [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER EMAIL],
    CONVERT(VARCHAR,CAST(CONVERT(VARCHAR, [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER YMDBIRTH]) AS DATETIME),101) AS [INDV MEMBER BirthDate],
    FLOOR((CAST (GETDATE() AS INTEGER) - CAST(CONVERT(DATETIME, CONVERT(CHAR(8), [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER YMDBIRTH])) AS INTEGER)) / 365.25) AS [INDV MEMBER AGE]
    FROM [#TempTable_Distinct_Individual_Member_All_Info]
    INNER JOIN [#TempTable_Distinct_Individual_Member_Prior_Year_Spans]
    ON [#TempTable_Distinct_Individual_Member_Prior_Year_Spans].[INDV MEMBER NBR] = [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER NBR]
    WHERE (CHARINDEX('HMO',LTRIM(RTRIM([#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name])),1) > 0
    OR CHARINDEX('POS',LTRIM(RTRIM([#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name])),1) > 0)
    ORDER BY [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER NBR]
    END
    Microsoft Visual Studio and SQL Server Reporting Services did not like this! When I added my dataset and parameters accordingly, my Dataset had no fields...almost as if running the Stored Procedure in the background to get its Metadata was not working. I
    know this works because I tested it as a result of a straight EXEC Command. Why doesn't Microsoft Visual Studio and SQL Server Reporting Services not like this IF? I did end up getting around this by parameterizing the WHERE clause based on the @ReportTypeName
    chosen.
    WHERE (@ReportTypeName = 'HMO-POS New To HFHP - No Prior Year Member Spans'
    AND (CHARINDEX('HMO',LTRIM(RTRIM([#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name])),1) > 0
    OR CHARINDEX('POS',LTRIM(RTRIM([#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name])),1) > 0)
    AND [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER NBR] NOT IN
    (SELECT [#TempTable_Distinct_Individual_Member_Prior_Year_Spans].[INDV MEMBER NBR]
    FROM [#TempTable_Distinct_Individual_Member_Prior_Year_Spans]))
    OR (@ReportTypeName = 'HMO-POS Renewals'
    AND (CHARINDEX('HMO',LTRIM(RTRIM([#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name])),1) > 0
    OR CHARINDEX('POS',LTRIM(RTRIM([#TempTable_Distinct_Individual_Member_All_Info].[INDV Benefit Plan Name])),1) > 0)
    AND [#TempTable_Distinct_Individual_Member_All_Info].[INDV MEMBER NBR] IN
    (SELECT [#TempTable_Distinct_Individual_Member_Prior_Year_Spans].[INDV MEMBER NBR]
    FROM [#TempTable_Distinct_Individual_Member_Prior_Year_Spans]))
    I appreciate your review and am hopeful for a reply.
    Thanks!

    Hi ITBobbyP,
    I have tested on my local environment and can reproduce the issue, the issue can be caused by the temp table you are using which will also cause the data not display.
    I have use below sample table and record to have a test and details information below for your reference:
    Right click the DataSet to select the "DataSet Properties" and click the query designer to execute the stored procedure by click the "!" to check if you can get the data:
    If you got some error, the issue can be cause by the temp table invalid, so please make sure you have add the query to create and insert  recored to temp table like below:
    CREATE PROCEDURE vickytest0311_1
    @ReportTypeName nvarchar(50)
    AS
    create table #VickyTest
    column1 int,
    column2 varchar(20)
    insert into #VickyTest values (1,'Test1')
    insert into #VickyTest values (2,'Test2')
    insert into #VickyTest values (3,'Test3')
    IF @ReportTypeName ='Test1'
    BEGIN
    select * from #VickyTest
    where Column1=1
    END
    IF @ReportTypeName ='Test2'
    BEGIN
    select * from #VickyTest
    where Column1=2
    END
    GO
    3. I recommend you to not use the temp table and you will not need to add the create and insert statement in the stored procedure.
    4. If you still got no data, please try to click the "Refresh fields" as below:
    If you still have any problem, please feel free to ask.
    Regards,
    Vicky Liu
    Vicky Liu
    TechNet Community Support

  • How do I retrieve a variable from a stored procedure in Access?

    Given a stored procedure like the one below,
    PROCEDURE getSomething(
                   pVar1           in float,
                   pVar2               in float,
                   pVar3               in float,
                   pVar4               in float,
                   pResults          out varchar2
    How would I retrieve the value in pResults using VBA on Access? Thanks.

    Using this, you can set the value to the session bean
    <c:set property="docID" target="${SessionBean1}" value="${pg_view_doc.hiddenField3.value}"/>
    But before that you have to create a property called docid in the sessionbean1.
    So once the property is set, through getDocID() method u can retrieve the value
    ex: String value=getSessionBean1().getDocID();
    will return the value in the required JSF Page bean

  • How do I get return parameters from a stored procedure call?

    The Open SQL Statement has an option on the Advanced tab to specify a command type of 'stored procedure'. In addition to returning a recordset, a stored procedure can also return parameters (see http://support.microsoft.com/support/kb/articles/Q185/1/25.ASP for info on doing this with ADO). Is it possible to get those return parameters with TestStand? In particular, I want to be able to get error codes back from the stored procedure in case it fails (maybe there is another way).

    The Open SQL Statement step type does not fully support stored procedures. If the procedure returns a record set than you can fetch the values as you would a SELECT statement. Stored procedures require you to setup the parameters before the call and this is not yet supported. Bob, in his answer, made a reference to the Statements tab and I think that he was talking about the Database Logging feature in TS 2.0.
    If the stored procedure is returning a return value, it may return as a single column, single row recordset which can be fetched as you normally do a record set.
    Scott Richardson
    National Instruments

Maybe you are looking for

  • Button in IP

    Hi all; I’m new in IP and have some doubts how to built one button. This is the customer scenario: I had filtered some characteristics but only one using variable. This variable is assign to characteristic ZORCAB. Also, I have one planning function w

  • Officejet 5750 running on Wndows 7 PC starts to print then stops and all lights start to flash.

    Printer had been working fine. Just started stopping a print after a few lines and all lights flash.Have to turn off and back on to clear. Doesn't do it every time. but does it on all programs and web printing.

  • Create Tablespace on different disk

    Hi! I am about to upgrade SAP ERP 6.0 to EHP4. As one of failed cheks was the insufficient free space in the database. The recommendation given by Tool (EHP Installer) was: > Create TABLESPACE PSAPSR3701 with 53181 MB I also found in the ORATBSXT the

  • How to use SDKODBCWrapper class in indesign cs3

    Hi,      I am designing a plugin to interact with the database. I can see Adobe has given sdkODBCWrapper class. How  can i consume this class  to implement the database to my plugin. Can anyone please help with complete code snippet. Thanks saravanan

  • Error -1074126843

    Error -1074126843 occurred at niFgen Create Waveform (DBL).vi Possible reason(s): The waveform length is invalid. Channel : No Waveform Data. I am a freshman and I am learning to create waveform from text to the AWG recently. It is ok when I just run