For Each Loop PL/SQL

I am slowly learning PL/SQL, I have some programming experience using Visual Basic for Excel, so I am not totally in the dark, but not really sure :-)
Here is what I am trying to do, am on 10g by the way.
I have about 10+ Tables in my schema, with pretty much the same structure and I know that I could use plain SQL to do this with, but I want to learn PL/SQL.
So, I have 10+ tables where I have to add a new field of type varchar2(100), I was wondering if I could employ the FOR LOOP or maybe something better, list all the Tables that I need to ALTER and say:
For each Table from list
LOOP
alter table table_name add KEY varchar2(100);
END LOOP;
I have the full list of the Tables, what do you guys think ?

If you want to practice PL/SQL then this is the wrong task.
You would need to use dynamic SQL (execute immediate or dbms_sql) for this, but usually you should avoid dynamic SQL for many reasons.
As you already mentioned this can be easily done with SQL.
What I do in such cases is to build a select that returns me the 10+ alter table statements.
The oracle data dictionary (e.g. the view user_tables) has enough information to build such a select based on your requirements.
Then save the result into a file and run the file as a script in sql*plus.
example untested
select 'alter table '||t.table_name||' add KEY varchar2(100);'
from user_tables t
where t.table_name like 'XYZ%'
and t.table_name not in (select c.table_name from user_tab_columns c where column_name = 'KEY');Changes to the data structure in your database should not be done programatically (e.g by pl/sql) but should be entered into your version control system so that you can run the same script against your development database, against your test database and later against your production database.

Similar Messages

  • SQL Agent Permssions With SSIS for each loop not looping through files

    Hi I am Having trouble getting a ssis package to iterate through a file directory using a proxy account set up in Sql Server.
    So I have a package that loops over csv files. If I run the package manually or set the sql agent job to run as Sysadmin the pakage runs fine all files are processed.
    However if I use the proxy account. the package completes but no files are processed. there are no failures, there is no error handling set up in the control flow. the for each loop container simply does not recognise any files when run under a proxy.
    Note: the proxy is set up with credentials to access the folder. the credential is also set up with the server admin server role... still nothing
    i'm not sure is this is a ssis or permissions problem?
    Any comments will be appreciated

    Can you check this and see if you've configured all the steps correctly
    http://www.mssqltips.com/sqlservertip/2163/running-a-ssis-package-from-sql-server-agent-using-a-proxy-account/
    Also enable logging in package and see if you're getting any error messages obtained in output table/file based on the logging option you chose.
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • For Each Loop for XML Task

    Hello Everyone,
    Please assist with a step by step guide on how to setup a For Each Loop for XML Task
    I'm trying to convert XML to XSLT
    I have tried more than 10 times and i just do not know what i am doing wrong - no error, my package just runs for a few seconds but nothing happens
    Thanks in advance
    Dee

    I managed to get my XML to XSLT to work but now when i run my package to import the data into SQL table,
    it stops after a few records, i get the following error: 
    [XML Source [1]] Error: The component "XML Source" (1) was unable to process the XML data. The element "Errors" cannot contain a child element. Content model is text only.
    Please assist
    Check this:
    http://social.msdn.microsoft.com/Forums/en-US/80726e0c-9e85-43ca-87bc-7cf90fd7fb31/xml-source-data-flow-throws-cannot-contain-a-child-element-content-model-is-text-only-error?forum=sqlintegrationservices
    Chaos isn’t a pit. Chaos is a ladder. Many who try to climb it fail and never get to try again. The fall breaks them. And some are given a chance to climb, but they refuse. They cling to the realm, or the gods, or love. Illusions. Only the ladder is real.
    The climb is all there is.

  • For Each Loop Load Dynamic Excel Files

    Hi All,
    SSIS 2005
    I want to load excel file .xls one at a time files that have different names without having to select the file in the connection manager, every time. So a user can easily place the excel file in the folder and right the sql job and it loads the file data.
    The data flow tasks all work when I manually select the excel file, but I am unable to get this to work dynamically.
    I have setup a for each loop with multiples data flow tasks and sql tasks to load my data from file.
    Variables:
    @filename d:\new file\*.xls
    For Each Loop:
    ForEachFile Enumerator
    Folder: d:\new file\
    Files: *.xls
    Retrieve File Name: Fully Qualified
    Variable Mappings:
    User::filename (index 0)
    Connection Managers:
    Excel Connection Manager: Expressions, ConnectionString @[User::filename]
    Error Message: Error at new buyer(package name) the connection string format is not valid. it must consist of one or more components of the form X=Y, seperated by semicolons.
    Can anyone assist thanks.

    You still need the file name variable.
    ExcelFilePath is the fully qualified file name of your Excel file. ie. it contains both the path and file name.
    e.g. D:\inbox\myExcelFile.xls
    All the steps you mentioned are correct, except you need to set the property of ExcelFilePath of the Excel connection to the variable that you map to in the ForEach Loop:
    Connection Managers:
    Excel Connection Manager: Expressions, ExcelFilePath @[User::filename]
    Hope this helps.
    ~ J.

  • For Each Loop: Truncation error on excel field

    In my SSIS package, I'm using a WMI file watcher combined with a ForEach loop to process excel files and load them into a SQL Server database as they are deposited in a drop box folder. Recently I've been getting truncation errors on one of my fields (Comments).
    I know that this is because Excel is scanning the first 8 rows to determine column length and there are several records that have a comments field that is greater than what excel determined.
    I've tried going to the excel editor in my advanced editor and setting the data type length of my external and output columns to a larger length (500 W_STR vs 255 W_STR) but I get a warning saying that the data type is not valid. I've tried adding IMEX=1
    to my extended properties in my excel connection string but no dice. Still getting truncation errors.
    I was wondering if anyone had any thoughts or suggestions? I'm always getting new files so the comments field will potentially always encounter this type of error. This SSIS package runs on a production server so making a Registry change to the excel drivers
    regarding the scanning of the first 8 rows is not an option for me.
    Migince

    I wound up making the registry change for # of rows scanned by excel and that seemed to solve the issue.
    I tried utilizing an excel template but every time my for each loop scanned for a new file, the metadata was updated with whatever column length was in the first 8 records of my new file. If you've got a good example of building an excel template to set
    the column length metadata in my excel source (For Each Loop) I would love to take a look at it. Good information to know.

  • SSIS For Each Loop Container

    Hello All,
    I have some files within sub folders. Below is the layout 
    C:\Source\01012015\Sample_1.csv
    C:\Source\01012015\Sample_2.csv
    C:\Source\02012015\Sample_1.csv
    C:\Source\02012015\Sample_2.csv
    C:\Source\03012015\Sample_1.csv
    C:\Source\03012015\Sample_2.csv
    I want
    to copy entire folder contents from source to destination including the sub folders and the files
    I am using for each loop container which reads the files form 01012015 folder, is there any way to read
    all the files from each and every folder(01012015, 02012015,03012015)?
    The destination should be like this. 
    C:\Archive\01012015\Sample_1.csv
    C:\Archive\01012015\Sample_2.csv
    C:\Archive\02012015\Sample_1.csv
    C:\Archive\02012015\Sample_2.csv
    C:\Archive\03012015\Sample_1.csv
    C:\Archive\03012015\Sample_2.csv
    Thanks, Shyam.

    Hi Shyam,
    According to your description, you want to copy entire folder contents including the sub folders and the files from source to destination.
    Based on my research, we should use Foreach File Container together with File System Task to achieve your requirement. For more details, please refer to the following links:
    https://social.msdn.microsoft.com/forums/sqlserver/en-US/4d99ebef-df43-44ad-9794-1d729cbf52e9/ssis-foreach-loop-copy-within-subfolders
    http://www.sql-programmers.com/for-each-loop-container.aspx
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • For each loop container executing multiple times....

    Hi,
    We are using SQL SERVER version 2005.
    I am having a For each loop container and inside that container there are multiple Sequence containers and inside each sequence containers there are Execute SQL Tasks (which are just stored procedures).
    Now, when i run sequence containers individually they are running perfectly fine.
    But when I run the whole For each loop container, it is just running and running multiple times without ending the process.
    I really couldnt figure out what would be the issue?
    Any ideas????
    Thanks....

    Hi grk666,
    To check whether the values stored in the object type variable are correct, you can disable all the Sequence Containers within the Foreach Loop Container, and add a Script Task with the following code to display the string type variable value (supposing
    you use the string type variable StrVar to store the value retrieved from the object variable):
    MsgBox(Dts.Variables(“StrVar”).Value.ToString())
    It would be helpful if you could post a screenshot to show the package execution at runtime in BIDS.
    Regards,
    Mike Yin
    TechNet Community Support

  • Package Help needed For each Loop container

    Hello all,
    I need a bit of advice, I`m a newbee to SSIS so I`m learning. Here`s what I need. I have a EDI 837 file which needs to be converted and inserted into a sql table. These are multiple files and I need to maintain them with a monthly load. So I have a source
    folder where these files will be dumped. I created a Package which will grab the files process the EDI aspect inserts into the data into table. This is the story on a high level.
    Here`s what I did.
    Created a For each loop container.
    I have a stored proc which takes in a 837 files and gets the fields what I want and it inserts it into a staging table from there I have a data flow task which pipes it into my production table.
    Inside the loop first task is to exec the Stored Proc but my question is once a file is picked up from for each loop I need the file to be inserted into a table which I am referencing in my store proc. All the EDI conversion takes place in my SP and it references
    the table..
    My question is the For each loop container picks up the files but where does the data goes?? Can someone help me out
    FM

    The foreach loop container (file enumerator) only returns the filename or filepath which you can use as a parameter in an Execute SQL Task or within an expression on a connection manager (which can be used in a Data Flow). So it doesn't do anything with
    the file. You have to add a task within the loop to do something with the file (Execute SQL Task/Data Flow Task/File System Task/etc.).
    Please mark the post as answered if it answers your question | My SSIS Blog:
    http://microsoft-ssis.blogspot.com |
    Twitter

  • Excel Sheet Looping: For each loop from variable Enumerator

    Hi,
    Is it possible to do excel sheets looping using For each loop Enumerator as "For Each loop from Variable enumerator" ? If yes, please help.
    Also,
    I have an excel file with 10 sheets, but want to loop only 5 sheets. Please help..how can i achieve this. 
    Actually i tried with
    1> stored the 5 sheets name into a variable (say 'SheetsName') of type string using script task
    2> For each loop container
       enumerator - 'For each ADO Schema Rowset enumerator'
       connection: ADO
       schema: 'Tables'
       variable mapping: 'User::SheetsName'
    3> Within For each loop container added a data flow task
    4> Inside DFT - excel source - 
       Data access Mode: 'Table Name or view name variable'
       Variable Name: 'SheetsName'
    but this loops through all the 10 sheets irrespective of only 5 sheets names stored in the variable "SheetsName".
    Please help...
    Please Mark as Answer if my post solved your problem or Vote As Helpful if this helps. Blogs: www.sqlserver2005forum.blogspot.com

    >> Is it possible to do excel sheets looping using For each loop Enumerator as "For Each loop from Variable enumerator" ? If yes, please help.
    I don't think so. To loop through all worksheets of Excel For ADO.NET Schema Rowset Enumerator is the only option.
    Please refer:
    https://msdn.microsoft.com/en-us/library/ms345182(v=sql.110).aspx
    >> I have an excel file with 10 sheets, but want to loop only 5 sheets
    So you have configured For Each loop container which loops throgh all sheets and returns you sheet name to variable "SheetName".
    Drag and drop one Sequence Container inside ForEach Loop Container and connect it to Data Flow Task.
    Right click on connector and use expression: (which will check if current sheet is one of 5 required sheets)
    @User::SheetName == "FirstSheet" ||  @User::SheetName == "SecondSheet" || .....
    Below blog demonstrates kind of simillar steps:
    http://www.bidn.com/blogs/MikeDavis/ssis/559/ssis-skip-certain-files-in-a-for-each-loop 
    -Vaibhav Chaudhari

  • How to use for each loop in XSLT when my source is a multilayout file and db

    How do I use a for each loop in XSLT when my source is multilayout file and db .
    My multilayout file is basically contain 2 kind of data one for employee and another for dependent.
    Now my requirement is I want to read each line of data whether it is it is employee or dependent do a join with db and write it in my target file.
    eg :  File content
    1 RichaKumari 311289 TCS INDIA
    2 KiarnKumar 456782 BRO RichaKumari 311289 INDIA
    2 Ravi            456882 BRO RichaKumari 311289 INDIA
    eg : db Content
    311289 RichaKumari TCS INDIA Bangalore [email protected]
    Now in Final File I need something like this :
    1 RichaKumari 311289 TCS INDIA
    2 KiarnKumar RichaKumari 311289 TCS INDIA
    2 Ravi            RichaKumari 311289 TCS INDIA
    here 1 and 2 are the identifier which will decide which layout to follow .

    Hi,
    I think you'll need two nested for-each's... Something like...
    <xsl:for-each select="$root/row[layout = 1]">
    <xsl:variable name="employee" select="."/>
    ... write employee ...
    <xsl:for-each select="$root/row[layout = 2 and dependentid = $employee/id]">
    ... write dependent ...
    </xsl:for-each>
    </xsl:for-each>
    Cheers,
    Vlad

  • Loading accdb file using for each loop in to single target table

    I have 3 accdb file as below in single folder, in control flow I have created a for each loop to loop through all the below file.  In dataflow task I have created oledb source using connection manager to point to first file a1.accdb. I am trying
    to load all the file into single below mentioned target table, here It is only loading first file it is not looping through other two file.
    This I have tried to load .txt files and csv files it is working perfectly but similarly when I try to load access db file table it is not working, can any one of you help me?
    1. a1.accdb contains only one table  a1tab ( col1 col2 col3 )  
    2. a2.accdb  contains only one table  a2tab  ( col1 col2 col3 )
    3. a3.accdb  contains only one table  a3tab   ( col1 col2 col3 )
    I have a target table with similar structure as source
    Target table <TargetTable> Col1 Col2 Col3
    aak

    Thanks Arthur, please find below response
    How do you handle the different table names?  Cant we handle it in a similar manner, how we handle the .csv/.txt files with different name and similar structure for sources(multiple files) and target (single table)
    Is it good to drop the idea of for each loop and create a separate task for each accdb file? to be loaded to same target table( performance wise etc.. any justification would be helpful)
    You must handle the connection string dynamically?
    Can you help me with the logic for handling connection string dynamically
    aak

  • How can I enable for-each loop in Creator update 1?

    I try to use for-each loop, but I got error message from compiler is
    " for-each loops are not supported in -source 1.4. (try -source 1.5 to enable for-each loops)"
    How can I switch my source to 1.5.. I am using jdk 1.5. Confusing.
    Thanks .
    Richard

    Hi!
    Actually Sun Java Studio Creator doesn't support Java EE 5 projects. If You want to create Java EE 5 project, try to use NetBeans with Visual Web Pack installed.
    Thanks,
    Roman.

  • For-each loop in OSB

    Hi,
    I have a senario where i have a varied length XMl is coming to me in response of a service callout, and I need to iterate over it to get the fieldvalue of a particular tag based on its fieldName(e.g FUNCTION_CODE) and assign to a tag of another xml for example
    THE XML Coming as response of service callout is
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <getDefaultValueResponse xmlns="http://data.transformation.nab.cz.fc.ofss.com">
    <getDefaultValueReturn>
    <fieldDefaultValue>F</fieldDefaultValue>
    <fieldName>FUNCTION_CODE</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue xsi:nil="true"/>
    <fieldName>PAYMENT_TRANSACTION_ID</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue xsi:nil="true"/>
    <fieldName>CHANNEL_ID</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue>CR</fieldDefaultValue>
    <fieldName>CREDIT_DEBIT_FLAG</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue xsi:nil="true"/>
    <fieldName>BRAND</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue>001</fieldDefaultValue>
    <fieldName>ACCOUNT_STATUS</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue>Mr</fieldDefaultValue>
    <fieldName>NAME_TITLE</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue>Y</fieldDefaultValue>
    <fieldName>MAIL_RETURN_INDICATOR</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue xsi:nil="true"/>
    <fieldName>ENTITY</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue xsi:nil="true"/>
    <fieldName>TRANSACTION_CURRENCY</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue xsi:nil="true"/>
    <fieldName>VERSION</fieldName>
    </getDefaultValueReturn>
    <getDefaultValueReturn>
    <fieldDefaultValue xsi:nil="true"/>
    <fieldName>TRANSACTION_RATE</fieldName>
    </getDefaultValueReturn>
    </getDefaultValueResponse>
    </soapenv:Body>
    </soapenv:Envelope>
    and i want to assign that value to transactionType tag of
    <?xml version="1.0" encoding="UTF-8"?>
    <tns:sandstonetns xmlns:tns="http://sandstone.response.transactionHistory.app.nab.cz.fc.ofss.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sandstone.response.transactionHistory.app.nab.cz.fc.ofss.com Sandstone_Data_Transaction_History_Response.xsd ">
    <tns:listOfTransactions>
    <tns:transactions>
    <tns:clients>
    <tns:clientID>tns:clientID</tns:clientID>
    </tns:clients>
    <tns:timestamp>2001-12-31T12:00:00</tns:timestamp>
    <tns:sequenceNumber>tns:sequenceNumber</tns:sequenceNumber>
    <tns:description>tns:description</tns:description>
    <tns:amount>0</tns:amount>
    <tns:accountNumber>tns:accountNumber</tns:accountNumber>
    <tns:debitOrCreditFlag>tns:debitOrCreditFlag</tns:debitOrCreditFlag>
    <tns:*transactionType*>tns:transactionType</tns:transactionType>
    </tns:transactions>
    </tns:listOfTransactions>
    <tns:returnResponse>
    <tns:returnCode>0</tns:returnCode>
    <tns:returnDescription>tns:returnDescription</tns:returnDescription>
    </tns:returnResponse>
    </tns:sandstonetns>
    I want to achieve this using for-each loop...kindly help me as I dont have any idea about how to use for-each loop...

    i want to select a the tag fieldValue based on the data in tag fieldName for eg if i iterate over the whole response XML searching for fieldName=FUNCTION_CODE then I whuold get the value 'F' and then I would assign this value 'F' to the transactionType tag of the XML
    <?xml version="1.0" encoding="UTF-8"?>
    <tns:sandstonetns xmlns:tns="http://sandstone.response.transactionHistory.app.nab.cz.fc.ofss.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sandstone.response.transactionHistory.app.nab.cz.fc.ofss.com Sandstone_Data_Transaction_History_Response.xsd ">
    <tns:listOfTransactions>
    <tns:transactions>
    <tns:clients>
    <tns:clientID>tns:clientID</tns:clientID>
    </tns:clients>
    <tns:timestamp>2001-12-31T12:00:00</tns:timestamp>
    <tns:sequenceNumber>tns:sequenceNumber</tns:sequenceNumber>
    <tns:description>tns:description</tns:description>
    <tns:amount>0</tns:amount>
    <tns:accountNumber>tns:accountNumber</tns:accountNumber>
    <tns:debitOrCreditFlag>tns:debitOrCreditFlag</tns:debitOrCreditFlag>
    *<tns:transactionType>tns:transactionType</tns:transactionType>*
    </tns:transactions>
    </tns:listOfTransactions>
    <tns:returnResponse>
    <tns:returnCode>0</tns:returnCode>
    <tns:returnDescription>tns:returnDescription</tns:returnDescription>
    </tns:returnResponse>
    </tns:sandstonetns>

  • For Each Loop in Jdev 10.1.2.17.84

    Is there anyway of using a for each loop in Jdev 10.1.2.17.84? I get errors for the standard syntax:
    for (int item : numbers) {
    System.out.println("Count is: " + item); }
    Am i missing something?

    Okay, i'm on 10.1.3 now and the syntax:
    for (int item : numbers) {
    System.out.println("Count is: " + item); }
    still doesn't work. What am I missing now?
    On compile I'm getting:
    Error(41,23): ; expected
    for the line with for (int item : numbers) {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • For each loop not working

    My trace statements inside my for each loop won't show.
    Please someone check my code. I"m getting no errors in flex
    builder. When i debug all vars are holding prober data. Thanks so
    much

    "essa tkinen" <[email protected]> wrote in
    message
    news:gr27rt$3sb$[email protected]..
    > yes there is data there a commas delimited list of
    keywords that are
    > catagorys. the selectedCatArray holds at list one
    element. I want to
    > return true if element is in that list
    For one thing, you're going to exit the function in the first
    iteration,
    because you return the result inside the loop. Return
    immediately exits the
    function. For another, I'd be tempted to switch it to
    something more like
    this:
    for (var i = 0; i<_item.cats.length; i++) {
    var iCat=item.cats
    //do your stuff here
    I have had really bad luck getting for each in to work the
    way I think it
    should.
    HTH;
    Amy

Maybe you are looking for

  • ICal server will not work

    I am running a small network on a MacPro running OS X server 10.5.4 with 2 mac clients and 2 windows clients. The OS X server was installed by an apple specialist but it is still not working properly and I find it hard to believe that it is a bug is

  • Attachments in SOAP adapter

    Hi, I am working on SOAP adapter and in the adapter there is an option called "keep attachments".Can you please let me know what this is.Does it mean we can send any file attachements like pdf,.txt etc?Not sure how the webservice can hold the file an

  • Using environment variable in rule file

    Hi, I want to datacopy from one cube (scenario Forecast) to another (scenario FcstJan, FcstFeb, and so on) based on which month is running currently. I want to use environment variable in the rule file. The Forecast data will be extracted in .txt and

  • BAPI_PR_CHANGE (Not Able to insert more than 3 Line Items)

    Hi Friends, I have Issue with BAPI_PR_CHANGE. I could Able to insert up to 3 lines items using this BAPI but if I am Trying to Insert More Than 3 BAPI throwing Dump. Any Idea on this? Any Parameter I need to pass for more than 3 line items. Let me kn

  • Getting error while fetching Log data using B1TE Tools

    Hi, i am using B1TE Tools to test an add on which generating an error while fetching the Log File using DI Logs Reader. The error is below: "Wrong Xml file format. "The data at the root level is invalid, Line 1, position 1.". please report it on B1TE