Export to INSERT STATEMENT Possible Bug
h2. Synopsis
Currently, if your table has nested tables using Types, the export to INSERT STATEMENT does correctly create the insert statement. In the sample below, the PURGE_WHERE_CLAUSE is a nested table (TYPE and TABLE of TYPE)
h2. Examples
h4. Below is an example of the incorrectly created insert statement made by SQL Developer.
INSERT
INTO PRG_DTLS
PRG_NAME,
TABLE_ID,
FILE_ID,
PRG_ORDER_SEQ_NO,
PRG_ACTION_ID,
OPERATING_SYSTEMS_ID,
PRG_WHERE_CLAUSE,
CREATED_BY,
CREATED_DATE,
LAST_UPDATED_BY,
LAST_UPDATED_DATE
VALUES
'GUITEST01',
26,
NULL,
1,4,
NULL,
*'STGMGR.PRG_CRITERIA(STGMGR.PRG_CRITERIA(PRCS_ID,=,1,null,null,null))',*
'XXXXXXX',
to_date('21-MAY-09','DD-MON-RR'),
'XXXXXXX',
to_date('21-MAY-09','DD-MON-RR')
h4. Below is a sample of how it should correctly be made
INSERT
INTO STGMGR.PRG_DTLS
PRG_NAME,
TABLE_ID,
PRG_ORDER_SEQ_NO,
PRG_ACTION_ID,
PRG_WHERE_CLAUSE,
CREATED_BY,
CREATED_DATE,
LAST_UPDATED_BY,
LAST_UPDATED_DATE
VALUES
'GUITEST01',
26,
1,
4,
*"STGMGR"."PRG_CRITERIA_NT"( "STGMGR".PRG_CRITERIA('PRCS_ID','=','1',NULL,NULL,NULL)),*
'XXXXXXXX',
TO_DATE('05/21/2009 15:45:18', 'MM/DD/YYYY HH24:MI:SS'),
'XXXXXXX',
TO_DATE('05/21/2009 15:45:18', 'MM/DD/YYYY HH24:MI:SS')
COMMIT;
h2. Is there a workaround or fix?
I've attempted to see if I can find a fix for this in some type of settings in the preference but I have not yet found anything. Has anyone found a fix for this issue?
Hi Barry,
It is a Type and Table of types stored as a nested table in a regular table.
Its basically a tool we created to store the WHERE clauses for an automated tool that will delete old data that we no longer need from our database.
So, it dynamically stores and creates the DELETE statements.
Hope this answers your question Barry.
Thanks.
Similar Messages
-
I haven't seen anyone from oracle on the thread below and wanted to make sure it gets seen so that the bug can be logged.
See this thread:
Export to INSERT errorIt has to do with data types. I think that the data appears in the correct order, but the quotes don't.
For example:
Using HR.COUNTRIES as an example:
Reorder REGION_ID to the first position and export to insert via file.
The file looks like this. Note the lack of quotes around COUNTRY_ID:
REM INSERTING into COUNTRIES
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('2',AR,'Argentina');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('3',AU,'Australia');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('1',BE,'Belgium');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('2',BR,'Brazil');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('2',CA,'Canada');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('1',CH,'Switzerland');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('3',CN,'China');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('1',DE,'Germany');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('1',DK,'Denmark');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('4',EG,'Egypt');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('1',FR,'France');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('3',HK,'HongKong');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('4',IL,'Israel');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('3',IN,'India');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('1',IT,'Italy');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('3',JP,'Japan');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('4',KW,'Kuwait');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('2',MX,'Mexico');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('4',NG,'Nigeria');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('1',NL,'Netherlands');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('3',SG,'Singapore');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('1',UK,'United Kingdom');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('2',US,'United States of America');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('4',ZM,'Zambia');
Insert into COUNTRIES ("REGION_ID","COUNTRY_ID","COUNTRY_NAME") values ('4',ZW,'Zimbabwe');
Thanks,
Eric -
SQL Performance Analyzer - no insert statements possible ?
Hi together
I traced a insert-stament on 9i, made a tuning set on the 11g for run in 10g. The creation of the tunig set was succesful. But if i want to play the tuning set on 10g with same data i get an error :
Type of SQL Statement not supported !
Can i only trace the select ? Have you made a test with bind variables ?
Thanks for your input.user626582 wrote:
Double postingHa ha , I was going to mention exactly the same!
Aman.... -
Problem with single quote when exporting insert statement
Hi
I'm using Oracle SQL Developer 2.1.1.64 on Ubuntu 10.04. I got some records which has single quote in it.
For example,
Let says Table '*TABLE_A*' has varchar2 column called '*COL_A*'.
And there is only one record in the table and the value is:
his friend's dog name is dog.
When I export that table data to insert statement, i got this:
Insert into TABLE_A (COL_A) VALUES ('his friend's dog name is dog.');
As you can see friend's is wrong, it should be friend''s instead. (note the double single quotes).
Anyone knows how to fix this please?Yes - that's a bug. But probably not what you're expecting.
Mind you really can't use "normal" SQL on LOBs, because they're just too big to fit in the statements.
You should export and import them through e.g. the DBMS_LOB package.
I do remember some request on the SQL Developer Exchange to automate this, so go vote there to add weight for future implementation.
So the bug is that the column's fields should all yield NULL inside the INSERTs.
Regards,
K. -
Using the Insert statement in a Java program without hardcoding the data
hello.
this is james mcfadden. i have developed a program called Demo.java, which is used with another program called QueryTableModel.java (a program that allows data to be viewed in a JTable). The Demo.java program displays a menu, connects to a database, allows the user to add data into the database and allows the user to view data that is already in the database. I have a problem with the Demo.java program. I have hardcoded the Insert statement in it. How do you use the Insert statement to put data into a database without hardcoding the data?
import java.awt.*;//Contains all of the classes for creating user interfaces and for painting graphics and images
import java.awt.event.*;//Provides interfaces and classes for dealing with different types of events fired by AWT components
import javax.swing.*;//Provides a set of lightweight components that, to the maximum degree possible, work the same on all platforms
import javax.swing.table.*;//Provides classes and interfaces for dealing with javax.swing.JTable
import javax.swing.JOptionPane;//provides a class that makes it easy to pop up a standard dialog box that prompts users for a value or informs them of something
import java.sql.*;//Provides the API for accessing and processing data stored in a data source using the Java programming language
public class Demo extends JFrame{
static String url = "jdbc:odbc:VideoLibrary";//a static variable that allows a connection to be made to a database called VideoLibrary
static Statement stmt;//a static variable that allows a statement to be made once a connection is set up
static Connection con;//a static interface that allows a connection to be made to a database
//global variables
JTextField hostField;//a class that allows a line of text to be changed
JTextField queryField;//a class that allows a line of text to be changed
QueryTableModel qtm;//a class that shows and changes regular two-dimensional tables of cells
JComboBox comboBox;//a class that puts a button or editable field and a drop-down list together
public static void main(String args[]){
int choice=-1;//a variable of type int that is set to -1
do{
choice=getChoice();//invokes the method getChoice()
if(choice!=0){
getSelected(choice);//invokes the method getSelected(choice)
}//end if
//if the user chooses 5, it will cause him or her to exit the system
}while(choice!=5);//end do-while
System.exit(0);//closes down the menu screen
}//end main
public static int getChoice(){
String choice;//a variable of type string
int ch;//a variable of type int
choice = JOptionPane.showInputDialog(null,"1. Maintain product details\n"+"2. Maintain member details\n"+"3. Maintain rental details\n"+"4. View product, member and rental details\n"+"5. Log Off\n\n"+"Enter your choice");//asks the user for some input
ch = Integer.parseInt(choice);//a class that wraps a value of the primitive type int in an object
return ch;//a method that returns an integer value
}//end getChoice
public static void getSelected(int choice){
if(choice==1){
maintainProductDetails();//invokes the method maintainProductDetails()
}//end if
if(choice==2){
maintainMemberDetails();//invokes the method maintainMemberDetails()
}//end if
if(choice==3){
maintainRentalDetails();//invokes the method maintainRentalDetails()
}//end if
if(choice==4){
Demo test = new Demo();//invokes the constructor Demo()
test.setVisible(true);//shows the JTable component by marking it as visible
}//end if
}//end getSelected
public static Connection getConnection(){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//used to create a JDBC connection using a database
}//end try
catch(java.lang.ClassNotFoundException e){//causes an exception to be thrown when an application tries to load in a class through its string name
System.err.print("ClassNotFoundException: ");//displays an error message
System.err.println(e.getMessage());//returns the exception that was raised if an error occurred while attempting to load the ClassNotFoundException class
}//end catch
try {
con=DriverManager.getConnection(url,"","");//tries to create a connection with the database using the DriverManager class
}//end try
catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());//returns an SQL error message
}//end catch
return con;
}//end getConnection
public static void maintainProductDetails(){
Connection con = getConnection();//creates a connection with the database
String addProduct1, addProduct2, addProduct3, addProduct4, addProduct5, addProduct6, addProduct7, addProduct8, addProduct9, addProduct10;//string variables that represent information about the different types of product data that will be stored in the database
addProduct1 = "insert into Product values (110001, 'The Killers - Sams Town', 5.00, 'G', 'CD', 2006)";
addProduct2 = "insert into Product values (110002, 'Robbie Williams - Rudebox', 5.00, 'G', 'CD', 2006)";
addProduct3 = "insert into Product values (110003, 'Razorlight - Razorlight', 5.00, 'G', 'CD', 2006)";
addProduct4 = "insert into Product values (110004, 'My Chemical Romance - The Black Parade', 5.00, 'G', 'CD', 2006)";
addProduct5 = "insert into Product values (110005, 'Snow Patrol - Eyes Open', 5.00, 'G', 'CD', 2006)";
addProduct6 = "insert into Product values (110006, 'Scissor Sisters - Ta-Dah!', 5.00, 'G', 'CD', 2006)";
addProduct7 = "insert into Product values (110007, 'Lovesounds - Justin Timberlake', 5.00, 'G', 'CD', 2006)";
addProduct8 = "insert into Product values (110008, 'Director - We thrive on big cities', 5.00, 'G', 'CD', 2006)";
addProduct9 = "insert into Product values (110009, 'Roxette - Roxette hits', 5.00, 'G', 'CD', 2006)";
addProduct10 = "insert into Product values (110010, 'Pussy Cat Dolls - PCD', 5.00, 'G', 'CD', 2006)";
try {
stmt = con.createStatement();//Creates a Statement object for sending SQL statements to the database
//statements are allowed to be made once a connection is set up
stmt.executeUpdate(addProduct1);
stmt.executeUpdate(addProduct2);
stmt.executeUpdate(addProduct3);
stmt.executeUpdate(addProduct4);
stmt.executeUpdate(addProduct5);
stmt.executeUpdate(addProduct6);
stmt.executeUpdate(addProduct7);
stmt.executeUpdate(addProduct8);
stmt.executeUpdate(addProduct9);
stmt.executeUpdate(addProduct10);
stmt.close();//closes the Statement object
con.close();//terminates the connection with the database
}//end try
catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());//returns an SQL error message
}//end catch
}//end maintainProductDetails
public static void maintainMemberDetails(){
Connection con = getConnection();//creates a connection with the database
String addMember1, addMember2, addMember3, addMember4, addMember5, addMember6, addMember7, addMember8, addMember9, addMember10;//string variables that represent information about the member data that will be stored in the database
addMember1 = "insert into Member values (1234, 'Ann', 'Smyth', 'Upper Killult, Falcarragh, Co. Donegal', '(074)-9135210', '(087)-2030172', #5/11/85#, #5/12/06#)";
addMember2 = "insert into Member values (2345, 'John', 'Murphy', 'Lower Killult, Falcarragh, Co. Donegal', '(074)-9135211', '(087)-2030173', #4/12/85#, #6/13/06#)";
addMember3 = "insert into Member values (1324, 'James', 'McFadden', 'Lower Ardsbeg, Gortahork, Co. Donegal', '(074)-9165314', '(087)-2030171', #4/11/85#, #6/14/06#)";
addMember4 = "insert into Member values (1235, 'Frankie', 'Ferry', 'Ardsmore, Gortahork, Co. Donegal', '(074)-9165325', '(087)-2031234', #6/13/60#, #6/15/06#)";
addMember5 = "insert into Member values (1236, 'Daniel', 'McKimm', 'Ballyness, Falcarragh, Co. Donegal', '(074)-9135212', '(087)-2030184', #5/14/73#, #6/16/06#)";
addMember6 = "insert into Member values (2346, 'Stephen', 'Doohan', 'Ballyness, Falcarragh, Co. Donegal', '(074)-9135213', '(087)-2030185', #6/13/85#, #5/13/06#)";
addMember7 = "insert into Member values (2347, 'James', 'Ferry', 'Meenlaragh, Gortahork, Co.Donegal', '(074)-9165360', '(087)-2031345', #9/12/85#, #5/14/06#)";
addMember8 = "insert into Member values (2348, 'Liam', 'Cannon', 'Derryconner, Gortahork, Co.Donegal', '(074)-9165324', '(087)-2031456', #4/11/86#, #5/15/06#)";
addMember9 = "insert into Member values (2401, 'Ciaran', 'Ferry', 'Brinalack, Gweedore, Co.Donegal', '(074)-9176425', '(087)-2030282', #9/12/85#, #5/16/06#)";
addMember10 = "insert into Member values (2402, 'Ciaran', 'McGee', 'Derrybeg, Gweedore, Co.Donegal', '(074)-9176536', '(087)-2030393', #9/14/85#, #5/18/06#)";
try{
stmt = con.createStatement();//Creates a Statement object for sending SQL statements to the database
//statements are allowed to be made once a connection is set up
stmt.executeUpdate(addMember1);
stmt.executeUpdate(addMember2);
stmt.executeUpdate(addMember3);
stmt.executeUpdate(addMember4);
stmt.executeUpdate(addMember5);
stmt.executeUpdate(addMember6);
stmt.executeUpdate(addMember7);
stmt.executeUpdate(addMember8);
stmt.executeUpdate(addMember9);
stmt.executeUpdate(addMember10);
stmt.close();//closes the Statement object
con.close();//terminates the connection with the database
}//end try
catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());//returns an SQL error message
}//end catch
}//end maintainMemberDetails
public static void maintainRentalDetails(){
Connection con = getConnection();//creates a connection with the database
String addRental1, addRental2, addRental3, addRental4, addRental5, addRental6, addRental7, addRental8, addRental9, addRental10;//string variables that represent information about the loan data that will be stored in the database
addRental1 = "insert into Rental values (110001, 'The Killers - Sams Town', 1234, 'Ann', 'Smyth', #9/01/06#, #9/10/06#, 'Yes', 2.00)";
addRental2 = "insert into Rental values (120001, 'Mission Impossible 3', 2345, 'John', 'Murphy', #9/02/06#, #9/09/06#, 'No', 0.00)";
addRental3 = "insert into Rental values (130001, 'Need for Special Carbon', 1324, 'James', 'McFadden', #9/03/06#, #9/12/06#, 'Yes', 2.00)";
addRental4 = "insert into Rental values (110002, 'Robbie Williams - Rudebox', 1235, 'Frankie', 'Ferry', #9/04/06#, #9/11/06#, 'No', 0.00)";
addRental5 = "insert into Rental values (120015, 'Prime', 1236, 'Daniel', 'McKimm', #9/05/06#, #9/14/06#, 'Yes', 2.00)";
addRental6 = "insert into Rental values (130015, 'FIFA 07', 2346, 'Stephen', 'Doohan', #9/06/06#, #9/13/06#, 'No', 0.00)";
addRental7 = "insert into Rental values (110009, 'Roxette - Roxette hits', 2347, 'James', 'Ferry', #9/07/06#, #9/16/06#, 'Yes', 2.00)";
addRental8 = "insert into Rental values (120003, 'The Break Up', 2348, 'Liam', 'Cannon', #9/08/06#, #9/15/06#, 'No', 0.00)";
addRental9 = "insert into Rental values (130027, 'Gears of War', 2401, 'Ciaran', 'Ferry', #9/09/06#, #9/18/06#, 'Yes', 2.00)";
addRental10 = "insert into Rental values (110021, 'Scooter - Mind the Gap', 2402, 'Ciaran', 'McGee', #9/10/06#, #9/17/06#, 'No', 0.00)";
try{
stmt = con.createStatement();//Creates a Statement object for sending SQL statements to the database
//statements are allowed to be made once a connection is set up
stmt.executeUpdate(addRental1);
stmt.executeUpdate(addRental2);
stmt.executeUpdate(addRental3);
stmt.executeUpdate(addRental4);
stmt.executeUpdate(addRental5);
stmt.executeUpdate(addRental6);
stmt.executeUpdate(addRental7);
stmt.executeUpdate(addRental8);
stmt.executeUpdate(addRental9);
stmt.executeUpdate(addRental10);
stmt.close();//closes the Statement object
con.close();//terminates the connection with the database
}//end try
catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());//returns an SQL error message
}//end catch
}//end maintainRentalDetails
public Demo(){//a constructor
super("Demo Test Frame");//overrides the constructor
setSize(350, 200);//Resizes this component so that it has width of 350 and height of 200
comboBox = new JComboBox();//invokes the class JComboBox
comboBox.addItem("jdbc:odbc:VideoLibrary");//adds the specified item to the end of the scrolling list
qtm = new QueryTableModel();//invokes the class QueryTableModel
JTable table = new JTable(qtm);//a class that shows and changes regular two-dimensional tables of cells
JScrollPane scrollpane = new JScrollPane(table);//a class that provides a scrollable view of a lightweight component
JPanel p1 = new JPanel();//a class that puts the combo box and query field in a panel
p1.setLayout(new GridLayout(3, 2));//Sets the layout manager for this container
p1.add(comboBox);//Appends the specified component to the end of this container
p1.add(new JLabel("Enter your query: "));//Appends the specified component to the end of this container
p1.add(queryField = new JTextField());//Appends the specified component to the end of this container
p1.add(new JLabel("Click here to send: "));//Appends the specified component to the end of this container
JButton jb = new JButton("Search");//a class that is an implementation of a "push" button
jb.addActionListener(new ActionListener(){//Adds an ActionListener to the button
public void actionPerformed(ActionEvent e){
qtm.setHostURL();//invokes the method setHostURL
qtm.setQuery(queryField.getText().trim());//invokes the method setQuery; and returns the text that is presented by this text component and returns a copy of the string, with leading and trailing whitespaces omitted
} );//end addActionListener
p1.add(jb);//Appends the specified component to the end of this container
getContentPane().add(p1, BorderLayout.NORTH);//Returns the content pane
getContentPane().add(scrollpane, BorderLayout.CENTER);//Returns the content pane
}//end Demo
}//end class Demo
import java.sql.*;//Provides the API for accessing and processing data stored in a data source using the Java programming language
import java.io.*;//Provides for system input and output through data streams, serialization and the file system
import java.util.Vector;//provides a class that implements a growable array of objects
import javax.swing.*;//Provides a set of lightweight components that, to the maximum degree possible, work the same on all platforms
import javax.swing.table.*;//Provides classes and interfaces for dealing with javax.swing.JTable
public class QueryTableModel extends AbstractTableModel{
Vector cache;//a class that constructs an empty vector so that its internal data array has size 10 and its standard capacity increment is zero
int colCount;//a variable that counts the number of columns in the three tables
String[] headers;//a class that represents character strings and all string literals in this program are implemented as instances of the String class
Connection db;//an interface that allows a connection to be made to a database
Statement statement;//an interface that allows executes the given SQL statement, which returns a single ResultSet object
String currentURL;//a variable that allows the URL to be displayed in a combo box
public QueryTableModel(){//a constructor
cache=new Vector();//constructs an empty vector so that its internal data array has size 10 and its standard capacity increment is zero
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//used by opening a JDBC connection using an URL
}//end try
catch(Exception e){
System.out.println("problem loading the driver ");//an error message
}//end catch
}//end QueryTableModel
public String getColumnName(int i){//Returns the designated column's name
return headers;//returns the name of each column in the three table
}//end getColumnName
public int getColumnCount(){//Returns the number of columns in the column model
return colCount;//returns the number of columns in the three tables
}//end getColumnCount
public int getRowCount(){//Returns the number of rows in this table's model
return cache.size();//returns the number of components in the vector
}//end getRowCount
public Object getValueAt(int row, int col){//Returns the cell value at row and column
return ((String[])cache.elementAt(row))[col];//Returns the component at the specified index
}//end getValueAt
public void setHostURL(){//sets the URL for the database
String url = "jdbc:odbc:VideoLibrary";//a variable that allows a connection to be made to a database called VideoLibrary
closeDB();//invokes the method closeDB()
try{
db=DriverManager.getConnection(url,"","");//tries to create a connection with the database using the DriverManager class
statement=db.createStatement();//Creates a Statement object for sending SQL statements to the database
}//end try
catch(Exception e){
System.out.println("Could not initialize the database.");//an error message
e.printStackTrace();//a Throwable method that prints this throwable and it's backtrace to the standard error stream
}//end catch
}//end setHostURL
public void setQuery(String q){//sets the kind of query that is to be sent to the database
cache=new Vector();//constructs an empty vector so that its internal data array has size 10 and its standard capacity increment is zero
String s="select * from Product";//a variable that causes all the data that is in the product table to be displayed in a JTable, which also means that all the data that is in both the member and rental tables can also be displayed in a JTable
try{
ResultSet rs=statement.executeQuery(q);//an interface that is used to generate a database result set by executing a statement that queries the database
ResultSetMetaData meta=rs.getMetaData();//an interface that is used to get information about the types and properties of the columns in a ResultSet object
colCount=meta.getColumnCount();//Returns the number of columns in this ResultSet object
headers=new String[colCount];//gets the name of each column in the three tables
for(int h=1;h<=colCount;h++){
headers[h-1]=meta.getColumnName(h);//Get the designated column's name
}//end for
while(rs.next()){
String[] record=new String[colCount];//stores the name of each column in the three tables in memory
for(int i=0;i<colCount;i++){
record[i]=rs.getString(i+1);//Retrieves the value of the designated column in the current row of this ResultSet object as a String
}//end for
cache.addElement(record);//Adds the specified component to the end of this vector, increasing its size by one
}//end while
fireTableChanged(null);//Forwards the given notification event to all TableModelListeners that registered themselves as listeners for this table model
}//end try
catch(Exception e){
cache=new Vector();//constructs an empty vector so that its internal data array has size 10 and its standard capacity increment is zero
e.printStackTrace();//a Throwable method that prints this throwable and it's backtrace to the standard error stream
}//end catch
}//end setQuery
public void initDB(String url){
try{
db=DriverManager.getConnection(url);//tries to create a connection with the database using the DriverManager class
statement=db.createStatement();//Creates a Statement object for sending SQL statements to the database
}//end try
catch(Exception e){
System.out.println("Could not initialize the database.");//an error message
e.printStackTrace();//a Throwable method that prints this throwable and it's backtrace to the standard error stream
}//end catch
}//end initDB
public void closeDB(){
try{
if(statement!=null){
statement.close();//Releases this Statement object's database and JDBC resources immediately instead of waiting for this to happen when it is automatically closed
}//end if
if(db!=null){
db.close();//Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically released
}//end if
}//end try
catch(Exception e){
System.out.println("Could not close the current connection.");//an error message
e.printStackTrace();//a Throwable method that prints this throwable and it's backtrace to the standard error stream
}//end catch
}//end closeDB
}//end class QueryTableModelhere's an uncommented version of the code.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.JOptionPane;
import java.sql.*;
public class Demo extends JFrame{
static String url = "jdbc:odbc:VideoLibrary";
static Statement stmt;
static Connection con;
JTextField hostField;
JTextField queryField;
QueryTableModel qtm;
JComboBox comboBox;
public static void main(String args[]){
int choice=-1;
do{
choice=getChoice();
if(choice!=0){
getSelected(choice);
}while(choice!=5);
System.exit(0);
public static int getChoice(){
String choice;
int ch;
choice = JOptionPane.showInputDialog(null,"1. Maintain product details\n"+"2. Maintain member details\n"+"3. Maintain rental details\n"+"4. View product, member and rental details\n"+"5. Log Off\n\n"+"Enter your choice");
ch = Integer.parseInt(choice);
return ch;
public static void getSelected(int choice){
if(choice==1){
maintainProductDetails();
if(choice==2){
maintainMemberDetails();
if(choice==3){
maintainRentalDetails();
if(choice==4){
Demo test = new Demo();
test.setVisible(true);
public static Connection getConnection(){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch(java.lang.ClassNotFoundException e){
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
try {
con=DriverManager.getConnection(url,"","");
catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
return con;
public static void maintainProductDetails(){
Connection con = getConnection();
String addProduct1, addProduct2, addProduct3, addProduct4, addProduct5, addProduct6, addProduct7, addProduct8, addProduct9, addProduct10;
addProduct1 = "insert into Product values (110001, 'The Killers - Sams Town', 5.00, 'G', 'CD', 2006)";
addProduct2 = "insert into Product values (110002, 'Robbie Williams - Rudebox', 5.00, 'G', 'CD', 2006)";
addProduct3 = "insert into Product values (110003, 'Razorlight - Razorlight', 5.00, 'G', 'CD', 2006)";
addProduct4 = "insert into Product values (110004, 'My Chemical Romance - The Black Parade', 5.00, 'G', 'CD', 2006)";
addProduct5 = "insert into Product values (110005, 'Snow Patrol - Eyes Open', 5.00, 'G', 'CD', 2006)";
addProduct6 = "insert into Product values (110006, 'Scissor Sisters - Ta-Dah!', 5.00, 'G', 'CD', 2006)";
addProduct7 = "insert into Product values (110007, 'Lovesounds - Justin Timberlake', 5.00, 'G', 'CD', 2006)";
addProduct8 = "insert into Product values (110008, 'Director - We thrive on big cities', 5.00, 'G', 'CD', 2006)";
addProduct9 = "insert into Product values (110009, 'Roxette - Roxette hits', 5.00, 'G', 'CD', 2006)";
addProduct10 = "insert into Product values (110010, '***** Cat Dolls - PCD', 5.00, 'G', 'CD', 2006)";
try {
stmt = con.createStatement();
stmt.executeUpdate(addProduct1);
stmt.executeUpdate(addProduct2);
stmt.executeUpdate(addProduct3);
stmt.executeUpdate(addProduct4);
stmt.executeUpdate(addProduct5);
stmt.executeUpdate(addProduct6);
stmt.executeUpdate(addProduct7);
stmt.executeUpdate(addProduct8);
stmt.executeUpdate(addProduct9);
stmt.executeUpdate(addProduct10);
stmt.close();
con.close();
catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
public static void maintainMemberDetails(){
Connection con = getConnection();
String addMember1, addMember2, addMember3, addMember4, addMember5, addMember6, addMember7, addMember8, addMember9, addMember10;
addMember1 = "insert into Member values (1234, 'Ann', 'Smyth', 'Upper Killult, Falcarragh, Co. Donegal', '(074)-9135210', '(087)-2030172', #5/11/85#, #5/12/06#)";
addMember2 = "insert into Member values (2345, 'John', 'Murphy', 'Lower Killult, Falcarragh, Co. Donegal', '(074)-9135211', '(087)-2030173', #4/12/85#, #6/13/06#)";
addMember3 = "insert into Member values (1324, 'James', 'McFadden', 'Lower Ardsbeg, Gortahork, Co. Donegal', '(074)-9165314', '(087)-2030171', #4/11/85#, #6/14/06#)";
addMember4 = "insert into Member values (1235, 'Frankie', 'Ferry', 'Ardsmore, Gortahork, Co. Donegal', '(074)-9165325', '(087)-2031234', #6/13/60#, #6/15/06#)";
addMember5 = "insert into Member values (1236, 'Daniel', 'McKimm', 'Ballyness, Falcarragh, Co. Donegal', '(074)-9135212', '(087)-2030184', #5/14/73#, #6/16/06#)";
addMember6 = "insert into Member values (2346, 'Stephen', 'Doohan', 'Ballyness, Falcarragh, Co. Donegal', '(074)-9135213', '(087)-2030185', #6/13/85#, #5/13/06#)";
addMember7 = "insert into Member values (2347, 'James', 'Ferry', 'Meenlaragh, Gortahork, Co.Donegal', '(074)-9165360', '(087)-2031345', #9/12/85#, #5/14/06#)";
addMember8 = "insert into Member values (2348, 'Liam', 'Cannon', 'Derryconner, Gortahork, Co.Donegal', '(074)-9165324', '(087)-2031456', #4/11/86#, #5/15/06#)";
addMember9 = "insert into Member values (2401, 'Ciaran', 'Ferry', 'Brinalack, Gweedore, Co.Donegal', '(074)-9176425', '(087)-2030282', #9/12/85#, #5/16/06#)";
addMember10 = "insert into Member values (2402, 'Ciaran', 'McGee', 'Derrybeg, Gweedore, Co.Donegal', '(074)-9176536', '(087)-2030393', #9/14/85#, #5/18/06#)";
try{
stmt = con.createStatement();
stmt.executeUpdate(addMember1);
stmt.executeUpdate(addMember2);
stmt.executeUpdate(addMember3);
stmt.executeUpdate(addMember4);
stmt.executeUpdate(addMember5);
stmt.executeUpdate(addMember6);
stmt.executeUpdate(addMember7);
stmt.executeUpdate(addMember8);
stmt.executeUpdate(addMember9);
stmt.executeUpdate(addMember10);
stmt.close();
con.close();
catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
public static void maintainRentalDetails(){
Connection con = getConnection();
String addRental1, addRental2, addRental3, addRental4, addRental5, addRental6, addRental7, addRental8, addRental9, addRental10;
addRental1 = "insert into Rental values (110001, 'The Killers - Sams Town', 1234, 'Ann', 'Smyth', #9/01/06#, #9/10/06#, 'Yes', 2.00)";
addRental2 = "insert into Rental values (120001, 'Mission Impossible 3', 2345, 'John', 'Murphy', #9/02/06#, #9/09/06#, 'No', 0.00)";
addRental3 = "insert into Rental values (130001, 'Need for Special Carbon', 1324, 'James', 'McFadden', #9/03/06#, #9/12/06#, 'Yes', 2.00)";
addRental4 = "insert into Rental values (110002, 'Robbie Williams - Rudebox', 1235, 'Frankie', 'Ferry', #9/04/06#, #9/11/06#, 'No', 0.00)";
addRental5 = "insert into Rental values (120015, 'Prime', 1236, 'Daniel', 'McKimm', #9/05/06#, #9/14/06#, 'Yes', 2.00)";
addRental6 = "insert into Rental values (130015, 'FIFA 07', 2346, 'Stephen', 'Doohan', #9/06/06#, #9/13/06#, 'No', 0.00)";
addRental7 = "insert into Rental values (110009, 'Roxette - Roxette hits', 2347, 'James', 'Ferry', #9/07/06#, #9/16/06#, 'Yes', 2.00)";
addRental8 = "insert into Rental values (120003, 'The Break Up', 2348, 'Liam', 'Cannon', #9/08/06#, #9/15/06#, 'No', 0.00)";
addRental9 = "insert into Rental values (130027, 'Gears of War', 2401, 'Ciaran', 'Ferry', #9/09/06#, #9/18/06#, 'Yes', 2.00)";
addRental10 = "insert into Rental values (110021, 'Scooter - Mind the Gap', 2402, 'Ciaran', 'McGee', #9/10/06#, #9/17/06#, 'No', 0.00)";
try{
stmt = con.createStatement();
stmt.executeUpdate(addRental1);
stmt.executeUpdate(addRental2);
stmt.executeUpdate(addRental3);
stmt.executeUpdate(addRental4);
stmt.executeUpdate(addRental5);
stmt.executeUpdate(addRental6);
stmt.executeUpdate(addRental7);
stmt.executeUpdate(addRental8);
stmt.executeUpdate(addRental9);
stmt.executeUpdate(addRental10);
stmt.close();
con.close();
catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
public Demo(){
super("Demo Test Frame");
setSize(350, 200);
comboBox = new JComboBox();
comboBox.addItem("jdbc:odbc:VideoLibrary");
qtm = new QueryTableModel();
JTable table = new JTable(qtm);
JScrollPane scrollpane = new JScrollPane(table);
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(3, 2));
p1.add(comboBox);
p1.add(new JLabel("Enter your query: "));
p1.add(queryField = new JTextField());
p1.add(new JLabel("Click here to send: "));
JButton jb = new JButton("Search");
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
qtm.setHostURL();
qtm.setQuery(queryField.getText().trim());
p1.add(jb);
getContentPane().add(p1, BorderLayout.NORTH);
getContentPane().add(scrollpane, BorderLayout.CENTER);
import java.sql.*;
import java.io.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.*;
public class QueryTableModel extends AbstractTableModel{
Vector cache;
int colCount;
String[] headers;
Connection db;
Statement statement;
String currentURL;
public QueryTableModel(){
cache=new Vector();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch(Exception e){
System.out.println("problem loading the driver ");
public String getColumnName(int i){
return headers;
public int getColumnCount(){
return colCount;
public int getRowCount(){
return cache.size();
public Object getValueAt(int row, int col){
return ((String[])cache.elementAt(row))[col];
public void setHostURL(){
String url = "jdbc:odbc:VideoLibrary";
closeDB();
try{
db=DriverManager.getConnection(url,"","");
statement=db.createStatement();
catch(Exception e){
System.out.println("Could not initialize the database.");
e.printStackTrace();
public void setQuery(String q){
cache=new Vector();
String s="select * from Product";
try{
ResultSet rs=statement.executeQuery(q);
ResultSetMetaData meta=rs.getMetaData();
colCount=meta.getColumnCount();
headers=new String[colCount];
for(int h=1;h<=colCount;h++){
headers[h-1]=meta.getColumnName(h);
while(rs.next()){
String[] record=new String[colCount];
for(int i=0;i<colCount;i++){
record[i]=rs.getString(i+1);
cache.addElement(record);
fireTableChanged(null);
catch(Exception e){
cache=new Vector();
e.printStackTrace();
public void initDB(String url){
try{
db=DriverManager.getConnection(url);
statement=db.createStatement();
catch(Exception e){
System.out.println("Could not initialize the database.");
e.printStackTrace();
public void closeDB(){
try{
if(statement!=null){
statement.close();
if(db!=null){
db.close();
catch(Exception e){
System.out.println("Could not close the current connection.");
e.printStackTrace(); -
Report with stored proc running multiple stored procedures with insert statement
Hi,
I wonder if this is possible in SSRS ... I use the 2012 version (Data Tools).
I have a report that triggers a stored procedure. See below.
Within this SP there are 2 insert statements getting data from 2 other SP's.
When I make a dataset referring to the main SP below, SSRS does not show me any fields at all.
Is this because it's a SP with insert statements and nested SP's?
At the end of the SP I make a select so it should see all the fields.
The parameters @month and @costcenter are multivalue params. I use a special function to convert the multivalues, selected in the report, into a string to pass it correctly to the query (comma separated).
USE [TestDB]
GO
/****** Object: StoredProcedure [dbo].[_Pink_SP_StandingsRegisterDataset] Script Date: 15-4-2014 13:31:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_Pink_SP_StandingsRegisterDataset]
@year INT,
@month NVARCHAR(50),
@costcenter NVARCHAR(500),
@GLaccount NVARCHAR(9)
AS
BEGIN
/* Remove existing content*/
DELETE FROM _Pink_TB_StandingsRegister
/* Add records part 1 */
INSERT INTO _Pink_TB_StandingsRegister
EXEC _Pink_SP_StandingsRegister @year, @month, @costcenter, @GLaccount
/* Add records part 2 */
INSERT INTO _Pink_TB_StandingsRegister
Type,
Row,
Year,
Month,
YearDatetable,
MonthDatetable
EXEC _Pink_SP_StandingsRegisterDatetable @year
/* Select all records */
SELECT *
FROM _Pink_TB_StandingsRegister
END
GOHi bijntjede2e,
After testing a similar scenario in my own environment, it works well in Reporting Services. In my test, the stored procedure returns all the fields from _Pink_TB_StandingsRegister table in the dataset. Then I select some values from year, month, costcenter
and Glaccount parameters, it inserts some values in the _Pink_TB_StandingsRegister table. So we can use this stored procedure as the dataset in the report.
In order to solve the problem more efficiently, I need to clarify some information.
Are you pass multiple values parameter to one stored procedure correctly? We can refer to the following thread:
http://social.technet.microsoft.com/Forums/en-US/dbdfa101-cccc-4e9f-aa50-566dc5ebcc27/ssrs-2008-r2-report-dataset-call-a-stored-procedure?forum=sqlrep
What results are you get when executing the stored procedure in SQL Server Management Studio? Is it works well? We should double those stored procedures.
If there are any misunderstanding, please elaborate the issue for further investigation.
Thanks,
Katherine Xiong
Katherine Xiong
TechNet Community Support -
Possible Bug In Apex 4.0.2
Hi Everyone.
I would like to report what I think is a bug in Apex 4.0.2.
If you go to my workspace on apex.oracle.com:
Workspace = EEG
Username = [email protected]
Password = galaxy (all lowercase)
Run the application: 37796 - Elie_Various_Goodies [no credentials are required]
This app was imported from my 4.0.1 workspace at my job. On the page I created two Date Picker items, P1_BEGIN_DATE and P1_END_DATE. I set them up so that whenever a user selects a begin date, a dynamic action "MANAGE_DATES" fires and automatically sets P1_END_DATE to this selected begin date value. Now when a user goes to select an end date, the displayed calendar starts at the previously selected begin date rather than the default of "Today".
All of this worked fine on my office (4.0.1) workspace. However, after exporting this app and then importing onto apex.oracle.com, none of this functionality would work. Even worse, whenever I try to select a begin date or even an end date, the selected dates never make it into the date picker fields. Displaying the "Session" window shows these fields as empty.
It was only after I copied the two date picker fields and also re-created my dynamic action (P1_BEGIN_DATE2, P1_END_DATE2, MANAGE_DATES) did my functionality return.
This behavior is quite strange. I can only think this is some sort of bug attributed to the export/import process when exporting a 4.0.1 app into a 4.0.2 workspace. I am not sure if this bizarre behavior happens with non-date picker items. Nor am I sure if this beavior would be repeated if I export/import from 4.0.2 into the another 4.0.2 environment.
Another strange thing I noticed. If I change my date picker items to be "date picker (classic)" type items, the dynamic action does not work at all. This is true in both 4.0.2 and 4.0.1. I'm not sure if this a bug or not. It could be that the classic date picker is just not "javascript" enabled so to speak. If that is true, then it would have been nice if the docs would have warned us about this.
Has anyone else seen this behavior?
Thank you.
ElieHi Joel.
First let me thank you for the warning about allowing "everyone" access to my workspace.
You're correct, of course. Anyone could destroy anything within my workspace. I guess I was too trusting especially as I have seen many posts on the Forum where others have given access to their workspace so that responders can offer help. I really should be more discreet about this. Again, thank you. Needless to say, I have changed my password.
With respect to the possible bug, the MANAGE_DATES dynamic action is intended to be a submit page because that is the only way I can see to get BOTH the P1_END_DATE date picker item as well as the end date textual field to be assigned the selected P1_BEGIN_DATE. I tried to use a dynamic action in which javascript sets the value of the end date textual field to the selected P1_BEGIN_DATE value. This works without the need to submit the page. Unfortunately, this does not cause the P1_END_DATE date picker item to default to this value. Instead, the default remains at today's date. This is why I finally resorted to a dynamic action that submits the page whenever a new value is selected (that is, a "change" event) from the P1_BEGIN_DATE date picker item.
All of this works in my office 4.0.1 environment. However, I was puzzled when this fails under 4.0.2 on the hosted web site at apex.oracle.com. This is why I posted a "possible" bug in 4.0.2.
I hope this all makes sense.
One more thing, as already mentioned in my original post, this "defaulting a date picker" functionality does NOT work at all for the "classic" date picker items in both 4.0.1 nor in 4.0.2. I realize one can implement this functionality (I' guessing) my using, say, a "onChange" javascript call to submit the page. It's just funny that the "classic" date picker items are not acted upon by the dynamic action MANAGE_DATES that submits the page.
Thank you.
Elie -
Relation between record in a form and insert statement written in button
hi all,
i am using Forms [32 Bit] Version 6.0.8.24.1 (Production).
i have a master detail form with relation
A is master of B, B is master of C and a button which resides on control block(other than A,B,C).
so i will insert a one record into the block 'A' and i will press button which will insert particular record into particular table.
so when i try to move to next record('A' block) it is asking for database change. when i give 'yes' everything is ok. but when i give 'no'(w.r.t that record) and moves to next record and inserts the record and insert record throguh button also, at this time user press 'yes' then the first record is not saving but what ever i have inserted through the insert statement is not rolling back.
How can i control insert statement with the respect to datablock change in the block.
The block 'C' data is going to the other table through insert statement the block 'C' i am posting. So due to 'post' the block is not getting cleared so insert statement is also firing.
In other words i want to unpost the posted data when user press 'no' in the database message.
I know there is nothing to do with the forms message. But is its possible to control when user press 'no' then the insert statement should not gets saved into the table.
Please help.
Thanks..
Edited by: GD on Jun 27, 2011 5:38 AMFirst off, you need to understand how Oracle Forms interacts with an Oracle database. Forms natively handles all DML transactions for you. Meaning, if you have a Forms data block based on a database table, Forms will generate all the necessary DML to handle any changes that occur in that block. You do not need to write your own DML statements in code.
so i will insert a one record into the block 'A' and i will press button which will insert particular record into particular table.Is Block "A" based on a table? How are you inserting the record into the table? If you are writting your own DML to insert the record this would explain why you are being prompted to save when you change records. As I mentioned, if your block is based on a table, Forms will know if you change a value within the block.
How can i control insert statement with the respect to datablock change in the block.If your blocks are based on tables, let Forms handle the DML! don't do it yourself.
In other words i want to unpost the posted data when user press 'no' in the database messageIf your block is based on a table, when you are prompted to save changes - answering 'NO' will automatically clear the current record of the data block (in essence - rollback the change).
Craig... -
Hi all
I had problem in insert statement.
I know the column of the table, tablename and the value to be insert.
My code:
Data: column(20) type c. -
>refer to the tablecolumn
Data: tablename(20) type c. -
>refer to table name
Data: value(20) type c. -
>value to be insert to the column in the table
column = 'Admino'.
tablename = 'Student'.
value = '123456'.
<b>insert <column> into <tablename> values <value>.</b>
i know there something wrong with my insert statement. How to do it in abap insert code where i can put in all the parameter in the insert statement.
Anycode or sample to show. Many thank.From f1 help....
EXTRACT
Basic form
EXTRACT fg.
Effect
Writes all fields of the field group fg (FIELD-GROUPS) as an entry in asequential dataset. If you have defined a field group HEADER,its fields precede each entry as a sort key. Afterwards, you canuse SORT and LOOP ... ENDLOOP to sort or process the datasetrespectively. No further EXTRACT statements are possible afterthis.
Notes
General:
As soon as you have extracted a dataset using EXTRACT, you canno longer extend the field group using INSERT. In particular, you cannot change the HEADERfield group at all after the first EXTRACT (regardless of thefield group to which it applied).
Large extract datasets are not stored in main memory. Instead, theyare kept in an external auxiliary file. You can set the directory inwhich this file is created using the SAP profile parameterDIR_EXTRACT. The default directory is the SAP data directory(SAP profile parameter DIR_DATA).
Notes
Runtime errors:
EXTRACT_AFTER_SORT/LOOP: EXTRACT after SORT, orLOOP. EXTRACT_BUFFER_NO_ROLL: Unable to create the required main
EXTRACT_FIELD_TOO_LARGE: Occupied length of a field is toolarge.
EXTRACT_HEADER_NOT_UNIQUE: Field group HEADER wasmodified after an EXTRACT statement.
EXTRACT_OPEN_EXTRACTFILE_OPEN:
Error opening the external extract dataset file.
EXTRACT_RESOURCEHANDLER_FAILED: Error deleting the externalextract dataset file.
EXTRACT_TOO_LARGE: Total length of the entry for extraction(including HEADER fields) is too large.
Additional help
Filling anExtract with Data
Extracts
Since internal tables have fixed line structures, they are not suited to handle data sets with varying structures. Instead, you can use extract datasets for this purpose.
An extract is a sequential dataset in the memory area of the program. You can only address the entries in the dataset within a special loop. The index or key access permitted with internal tables is not allowed. You may only create one extract in any ABAP program. The size of an extract dataset is, in principle, unlimited. Extracts larger than 500KB are stored in operating system files. The practical size of an extract is up to 2GB, as long as there is enough space in the filesystem.
An extract dataset consists of a sequence of records of a pre-defined structure. However, the structure need not be identical for all records. In one extract dataset, you can store records of different length and structure one after the other. You need not create an individual dataset for each different structure you want to store. This fact reduces the maintenance effort considerably.
In contrast to internal tables, the system partly compresses extract datasets when storing them. This reduces the storage space required. In addition, you need not specify the structure of an extract dataset at the beginning of the program, but you can determine it dynamically during the flow of the program.
You can use control level processing with extracts just as you can with internal tables. The internal administration for extract datasets is optimized so that it is quicker to use an extract for control level processing than an internal table.
Procedure for creating an extract:
Define the record types that you want to use in your extract by declaring them as field groups. The structure is defined by including fields in each field group.
Defining an Extract
Fill the extract line by line by extracting the required data.
Filling an Extract with Data
Once you have filled the extract, you can sort it and process it in a loop. At this stage, you can no longer change the contents of the extract.
Processing Extracts
INSERT Statement
The INSERT statement is used to insert values into a single database table.
<insert statement> ::= INSERT INTO <table name> <insert column list> <insert source>.
<insert source> ::= VALUES '(' <value> ( ',' <value> )* ')'
| <query specification>.
<value> ::= <value expression>
| <dynamic parameter specification>
| NULL.
<insert column list> ::= '(' <column name> ( ',' <column name> )* ')'.
In Open SQL the <insert column list> is not optional.
You cannot specify string literals as values for CLOB columns. Hex literals are not supported in Open SQL.
Examples
INSERT INTO employees (employee_id, employee_name)
VALUES (4711, 'John Smith')
Inserting Values. A new row is inserted into the table employees with the values 4711 and 'John Smith' for the columns employee_id and employee_name respectively.
INSERT INTO well_paid_employees (employee_id, salary)
SELECT employee_id, salary
FROM employees
WHERE salary > ?
Inserting the Result of a Query. The employee_idand the salaryof all employees from table employeeswith a salary exceeding a certain value are inserted into the table well_paid_employees.
Please reward points if helpful. -
Is it possible to use decode base on a pl/sql variable in field declaration of an insert statement?
For example:
INSERT INTO emp_schedule
(employee_id,
schedule_date,
destination,
start_time,
absent,
late,
entry_date_time,
decode(v_bucket_id,
1,
bucket1_class,
2,
bucket2_class,
3,
bucket3_class,
4,
bucket4_class,
5,
bucket5_class,
6,
bucket6_class,
7,
bucket7_class,
8,
bucket8_class,
9,
bucket9_class,
10,
bucket10_class,
11,
bucket11_class,
12,
bucket12_class,
13,
bucket13_class,
14,
bucket14_class,
15,
bucket15_class,
16,
bucket16_class,
17,
bucket17_class,
18,
bucket18_class,
19,
bucket19_class,
20,
bucke20_class,
bucket1_class),
bucket1_class_reghrs,
bucket1_sched_hrs,
actual_hours,
actual_start_time,
shift,
on_the_clock,
end_of_shift_complete)
VALUES
(v_employee_id,
v_payroll_date1,
v_destination,
v_start_punch,
'N',
'N',
SYSDATE,
v_class_number,
v_actual_hrs,
0,
v_actual_hrs,
v_start_punch,
v_shift,
v_on_clock,
'N');You have the DECODE in the wrong place
INSERT INTO emp_schedule
employee_id,
schedule_date,
destination,
start_time,
absent,
late,
entry_date_time,
bucket1_class,
bucket2_class,
bucket3_class,
bucket4_class,
bucket5_class,
bucket6_class,
bucket7_class,
bucket8_class,
bucket9_class,
bucket10_class,
bucket11_class,
bucket12_class,
bucket13_class,
bucket14_class,
bucket15_class,
bucket16_class,
bucket17_class,
bucket18_class,
bucket19_class,
bucket20_class,
bucket21_class,
bucket1_class_reghrs,
bucket1_sched_hrs,
actual_hours,
actual_start_time,
shift,
on_the_clock,
end_of_shift_complete
VALUES
v_employee_id,
v_payroll_date1,
v_destination,
v_start_punch,
'N',
'N',
SYSDATE,
DECODE(v_bucket_id, 1, v_class_number),
DECODE(v_bucket_id, 2, v_class_number),
DECODE(v_bucket_id, 3, v_class_number),
DECODE(v_bucket_id, 4, v_class_number),
DECODE(v_bucket_id, 5, v_class_number),
DECODE(v_bucket_id, 6, v_class_number),
DECODE(v_bucket_id, 7, v_class_number),
DECODE(v_bucket_id, 8, v_class_number),
DECODE(v_bucket_id, 9, v_class_number),
DECODE(v_bucket_id, 10, v_class_number),
DECODE(v_bucket_id, 11, v_class_number),
DECODE(v_bucket_id, 12, v_class_number),
DECODE(v_bucket_id, 13, v_class_number),
DECODE(v_bucket_id, 14, v_class_number),
DECODE(v_bucket_id, 15, v_class_number),
DECODE(v_bucket_id, 16, v_class_number),
DECODE(v_bucket_id, 17, v_class_number),
DECODE(v_bucket_id, 18, v_class_number),
DECODE(v_bucket_id, 19, v_class_number),
DECODE(v_bucket_id, 20, v_class_number),
DECODE(v_bucket_id, 21, v_class_number),
v_actual_hrs,
0,
v_actual_hrs,
v_start_punch,
v_shift,
v_on_clock,
'N'
); -
Want to construct insert statement from all_tab_columns
I am using Oracle 10GR2 and a new user for plsql
I want to write a plsql block or SQL in order to insert some dummy data.
I want to use the column list from all_tab_columns and want to construct insert statement
EX: I am trying to construct SQL as below
for i in (select column_name from all_tab_columns where table_name='EMP')
loop
v_sql := insert into emptest valuesi.column_name
could you please let me know any pointer for the same ..?
can I use any other technique for the same .. like collection, nested table etcAm not clear for this requirement, if possible could you please elaborate.
Also specify the requirement, inputs and expected outputs with your query in code format...
This will help.. -
Generate INSERT Statements question
Is there a built-in PL/SQL procedure that SQL Developer utilizes to generate the INSERT statements when one exports data from a worksheet in 'insert' format? Is it part of the DBMS_METADATA package?
MikeNo this is all done in Java, we use the DBMB-METADATA only for generating DDL...
-
Hello,
I noted in a post recently that an insert statement was formed like the one below the advantage being that there was one commit statement,
INSERT INTO TABLE
SELECT COLUMNS FROM DUAL
UNION ALL
SELECT COLUMNS FROM DUAL
So I have attempted to use something like it, I have three examples below two (first and third example) using the syntax above.
The last example attempts to use the syntax above but I have not included all the columns and it fails, is there anyway to form an insert statement similar to above that inserts multiple records for only some of the columns in the table with one commit statement.
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Apr 2 09:42:05 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> CONNECT SCOTT/TIGER
Connected.
... INSERT STATEMENT WITH 8 OF 8 COLUMNS REPRESENTED
SQL>
SQL> INSERT INTO SCOTT.EMP
2 SELECT 1000,'BELL','SALESMAN',7698,to_date('01/JAN/00','DD/MON/RR'),10000,100,30 FROM DUAL
3 UNION ALL
4 SELECT 2000,'HOOK','SALESMAN',7698,to_date('01/JAN/00','DD/MON/RR'),10000,100,30 FROM DUAL
5 /
2 rows created.
SQL>
... INSERT STATEMENT WITH 3 OF 8 COLUMNS REPRESENTED
SQL> Insert into SCOTT.EMP (EMPNO,ENAME,JOB) values (3000,'FRASER','SALESMAN');
1 row created.
SQL> Insert into SCOTT.EMP (EMPNO,ENAME,JOB) values (4000,'EATON','SALESMAN');
1 row created.
SQL>
... IS IT POSSIBLE TO USE A STATEMENT LIKE THIS TO INSERT 3 OF 8 COLUMNS.
SQL> INSERT INTO SCOTT.EMP
2 SELECT 5000,'CARR','SALESMAN' FROM DUAL
3 UNION ALL
4 SELECT 6000,'PLATT','SALESMAN' FROM DUAL
5
SQL> COMMIT
2 /
Commit complete.Thank You for any assistance
BenThank You for the clarification Chen,
This is the address that I was refering to about 6 posts down Oracle Database 10g Express Edition help
After rereading it I may have come to the wrong conclusion on what Sentinel was saying.
So is there any advantage to doing an insert with join all? I had the impression it was more efficient, faster or easier to write, what do you think?
Ben -
How to prepare an INSERT statement from the resultset
Hi Friends ,
I have to generate CREATE and INSERT statements for the Table already present in the database .
I can prepare CREATE statement by getting the MetaData from the database . Is it possible to create INSERT statement for the data already present in the database table if so how.
Thanks ,
Rajesh ReddyYou should be able to do something like SELECT * FROM foo WHERE 1 = 2. No rows will be returned. Call ResultSet#getMetaData() to get the meta data for the column names and types. You should then be able to dynamically create your own INSERT statement.
- Saish -
SQL*Loader-929: Error parsing insert statement for table
Hi,
I get the following error with SQL*Loader:
Table MYTABLE loaded from every logical record.
Insert option in effect for this table: INSERT
Column Name Position Len Term Encl Datatype
IDE FIRST * ; CHARACTER
SQL string for column : "mysequence.NEXTVAL"
CSI_NBR 1:10 10 ; CHARACTER
POLICY_NBR 11:22 12 ; CHARACTER
CURRENCY_COD 23:25 3 ; CHARACTER
POLICY_STAT 26:27 2 ; CHARACTER
PRODUCT_COD 28:35 8 ; CHARACTER
END_DAT 44:53 10 ; CHARACTER
FISCAL_COD 83:83 1 ; CHARACTER
TOT_VAL 92:112 21 ; CHARACTER
SQL*Loader-929: Error parsing insert statement for table MYTABLE.
ORA-01031: insufficient privileges
I am positive that I can SELECT the sequence and INSERT into the table with the user invoking sql*loader.
Where does that "ORA-01031" come from?
Regards
...Options:
1) you are wrong about privileges OR
2) you have the privilege only when you connect via SQL*Plus (or whichever other tool you used to test the insert).
Is it possible that during your test you enabled the role which granted you the INSERT privilege - and that SQL*Loader doesn't do this?
Can you see the table in this list?
select *
from user_tab_privs_recd
where table_name='MY_TABLE'
and owner='table owner whoever';
select *
from user_role_privs;Any roles where DEFAULT_ROLE is not YES?
HTH
Regards Nigel
Maybe you are looking for
-
Where can I find a downloadable benchmark for the MacBook Pro?
I have a 2013 MacBook Pro and a 2006 Mac Pro. I am thinking of dumping the Mac Pro and make my MacBook my one and only computer. I want to run a benchmark on each system to see what I am trading off with this plan. Where can I find a downloadable ben
-
Transcoding from AVCHD 60i for 24p
Sorry for this long post. I have spent a long time looking for answers. I would like to combine different formats into one sequence. I primarily have AVCHD 1080p24 but need to include some 1080i60. All shot with Panasonic Lumix GH2. I have logged and
-
Hi, I want to install a BOE and be able to save Crystal Reports which report data off SAP system. The following is what I did: 1. Install JDK and Tomcat 5.5 2. Install BOE XI 3.1 SP2 and deploy it to the existing Tocat The reason that I manually inst
-
Forcing a RichEditableText focus glow
I am creating some accessibility navigation shortcuts for an application and notice that the RichEditableText component (editable=false) has a glow when tabbing to it but doesn't have a glow when using AS to set the focus to it. focusManager.setFocus
-
How to prepare for the EBS R12 Supply Chain OCE Certification
Hello everybody, I post this thread because I'm going to take the exams to get the certification as Oracle EBS R12 Supply Chain Certified Expert Consultant and I'd like to understand how to best prepare myself. Is there anyone who has already got thi