Update Oracle from 4.5 to 8i
How can I install Oracle 8i over older one (4.5) without affecting tables and information in the previous one.
note: I am working on a network database and connecting to online ones.
Please, help me.
Regards,
Hanady
How can I install Oracle 8i over older one (4.5) without affecting tables and information in the previous one.
note: I am working on a network database and connecting to online ones.
Please, help me.
Regards,
Hanady
Similar Messages
-
Hi
tp return code 12 after update oracle from 9.2.0.4 to 9.2.0.8
Please help me.
Thank youHi Maurizio,
What does the transport logs says about the error?
-Pinkle -
Re: Update Oracle from form data?
Too much to peruse. You should debug it yourself, for example by inserting System.out.println statements in there to figure out where it's giving you trouble.
"...Too much to peruse..." - indeed.
I'd recommend that you write a Java object that does all your database interactions and test it seperately from the servlet. Once you have that working, then let you servlet create an instance and just call its methods. By then you'll be 100% certain that your database object is working, and you can turn your attention to other problems.
I'd recommend JUnit as a good Java unit testing framework:
http://www.junit.org
I'd also recommend that you look into JSTL and JSPs. Jakarta has a great implementation of JSTL (Java Standard Tag Library). It'll help simplify this code a lot. - MOD -
Upgrade Oracle from the version 9 to 10
Hi!
We are planning a SAP-upgrade from 4.6c with Oracle version 9 to SAP EHP4.
The target oracle version should be 10.
Questions:
1) What is the procedure to update Oracle from version 9 to 10?
1a) where can I find the appropriate documentation?
1b) with which tool should this operation be executed?
Thank you very much!Holger,
1) What is the procedure to update Oracle from version 9 to 10?{
1a) where can I find the appropriate documentation?
1b) with which tool should this operation be executed?
You can download Oracle database upgrade from
https://websmp209.sap-ag.de/instguides>Database Upgrades>Oracle
This document explains the procedure of updgrading Oracle from version 9i to 10g
Note 720886 - Oracle Database 10g Integration into the SAP environment.pdf
Note 828268 - Oracle Database 10g New functions.pdf
After database upgrade you need to adjust the DB parameters according SAP Note 830576 - Parameter recommendations for Oracle.
Thanks
Sushil
Edited by: Sushil Suryawanshi on Jun 4, 2009 7:03 PM -
Insert and update tables from SQL server to oracle database tables
Hi,
I am having problem while update data from sql server to oracle database tables.
I am doing one way insert +updates that is from SQL Server tables ==> Oracle database tables
I am using tools Sql server Integration service. I can insert data from sql server to oracle but update can't. Please help me how can I update + insert from sql server to oracle database tables easily.
Thanks in advance.Hi,
What about using Oracle SQL Developer for migration
http://www.oracle.com/technetwork/database/migration/sqlserver-095136.html
HTH -
Can someone tell me how to delta update data from db like oracle?
Hi gurus:
as the title,can someone tell me how to delta update data from db like oracle?
and can someone give me some link about the detail of delta update?
thanks very much.
chanHi,
Check help links
Data Transfer with DB Connect
http://help.sap.com/saphelp_nw04/helpdata/en/58/54f9c1562d104c9465dabd816f3f24/frameset.htm
http://www.bwexpert.com/downloads/DBConnectMakingDELTAABAPCode.doc
Delta Concept
http://help.sap.com/saphelp_nw04/helpdata/en/84/81eb588fc211d4b2c90050da4c74dc/frameset.htm
Thanks -
Problem installing Oracle Linux Release 5 Update 2 from Oracle e-Delivery
Hello
I have been trying to install Oracle Linux Release 5 Update 2 from Oracle e-Delivery so that I can install Oracle 11g express edition beta.
Here are the steps that I took and the problem that I am having:
1. I downloaded the file, unzipped the file twice, which gave me 3,042 files and 13 folders with the total size = 3.07 GB.
2. I put in the DVD and restarted my PC hoping that my PC will boot from the DVD, but instead Window started.
I reported this issue to tech support from e-Delivery, but they referred me to contact you. Please assist.
Julia3,042 files and 13 folders with the total size = 3.07 GBWhich download .zip did you choose from edelivery? Under linux-x64 I peeked "Oracle Linux Release 5 Update 2 for x86_64 (64 Bit) - DVD" file V15099-01.zip downloaded, it has just the one .iso file. You'll need to burn that to DVD, but with burn s/w that handles ISO files.
Also keep in mind you'll need 64 bit hardware (amd/intel 64? itanium? those are different), the only *nix platform I've got handy to try it out is -x86 :( -
Help needed to access Oracle from Applet.
Please help. I have spent days reading info on the web and I simply cannot access to Oracle from an applet to work. Oracle is on a different IP than the Web Server. For my testing I am running the html directly from my local file system.
Here are the steps I have taken:
1. Create a key: "%JAVA_HOME%/bin/keytool" -genkey -alias MyAlias -keypass MyKPass -keystore C:\Keys.bin -storepass MySPass
2. Sign my jar: "%JAVA_HOME%/bin/jarsigner" -keystore C:\Keys.bin -storepass MySPass -keypass MyKPass -signedjar myjar-signed.jar myjar.jar MyAlias
3. Sign Oracle's Jar: "%JAVA_HOME%/bin/jarsigner" -keystore C:\Keys.bin -storepass MySPass -keypass MyKPass -signedjar ojdbc14-signed.jar ojdbc14.jar MyAlias
4. Applet Tag (at this time I have the two jars in the same folder as the HTML and JS files):
<applet id="MyApp"
codebase=""
archive="myjar-signed.jar,ojdbc14-signed.jar"
code="com/company/applets/Test.class"
mayscript
width="50" height="50">
</applet>5. Javascript:
document.observe("dom:loaded", function() {
alert("Applet: " + $('MyApp').getVersion());
$('MyApp').getConnection(url, user, pswd);
alert("Applet: " + $('MyApp').getVersion() + "Got Connection.");
$('MyApp').testConnection();
alert("Applet: " + $('MyApp').getVersion() + "Connection Tested.");
});Execution:
1. The applet loads, The browser asks if I want to trust it, I say yes.
2. The '$('MyApp').getVersion()' works.
3. The '$('MyApp').getConnection(url, user, pswd);' fails. Java Code:
public void getConnection(String url, String user, String pswd)
throws Exception {
try {
System.out.println("Driver...");
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
System.out.println("Connection...");
_conn = DriverManager.getConnection(url, user, pswd);
...The driver registers, but the getConnection fails with a security error.
After much reading, I used policytool to update the policy file. It added:
keystore "file:/C:/Keys.bin", "jks";
grant signedBy "MyAlias" {
permission java.security.AllPermission;
};This did not make any difference. Both IE and FF get the same error.
The JRE being used is 1.6.0_14.
Any help solving this would be MUCH appreciated.
Thanks.I have simplified the problem, and now it has nothing to do with Oracle. It is a certificate/signing problem.
Here are the steps I took to set the test up:
Certificate:
"%JAVA_HOME%/bin/keytool" -genkey -storepass MyStorePswd -keyalg RSA -alias MyRsa -dname "CN=Company.com, OU=IT, O=Company Inc, L=Atlanta, ST=Georgia, C=US, DC=mailexpress, DC=com" -validity 999
"%JAVA_HOME%/bin/keytool" -selfcert -storepass MyStorePswd -alias MyRsa -validity 999
"%JAVA_HOME%/bin/keytool" -exportcert -storepass MyStorePswd -alias MyRsa -rfc -file MyRsa.cer
"%JAVA_HOME%/bin/keytool" -importcert -keystore "C:\Program Files\Java\jre6\lib\security\cacerts." -storepass changeit -alias MyRsa -file MyRsa.cer
Jar Signing:
"%JAVA_HOME%/bin/jarsigner" -storepass MyStorePswd -keypass MyStorePswd -signedjar Text-Project-signed.jar Text-Project.jar MyRsa
"%JAVA_HOME%/bin/jarsigner" -verify Text-Project-signed.jar
Result: jar verified.
HTML:
<applet id="MyApp"
codebase="file:/c:/projects/Text-Project/js/Memory"
archive="Text-Project.jar" <== unsigned test OR
archive="Text-Project-signed.jar" <== signed test
code="com/company/applets/MemTest.class"
mayscript
width="50" height="50">
</applet>
JavaScript:
document.observe("dom:loaded", function() {
alert("Applet: " + $('MyApp').checkSecurity());
Function in the Applet:
public String checkSecurity() {
System.out.println("Security Check...");
try {
AccessController.checkPermission(new FilePermission("MemTest.js", "read"));
AccessController.checkPermission(new FilePermission("MemTest.js", "write"));
AccessController.checkPermission(new java.net.SocketPermission("192.168.1.121", "resolve"));
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
return "Security Checked OK";
}Results (Internet Explorer):
1. Unsigned JAR, No policy:
Result = java.security.AccessControlException: access denied (java.io.FilePermission MemTest.js read)
(as expected)
2. Unsigned JAR, Policy = permission java.security.AllPermission:
Result = Security Checked OK
(as expected)
3. Signed JAR, No Policy: Popup states: signature verified; do you want to run the application.
Result = java.security.AccessControlException: access denied (java.io.FilePermission MemTest.js read)
(not expected)
Something is wrong with the certificate or signing process. Any ideas ?
Thanks.
Edited by: javadude.101 on Jul 29, 2009 12:29 PM -
How to prevent Oracle from using an index when joining two tables ...
How to prevent Oracle from using an index when joining two tables to get an inline view which is used in an update statement?
O.K. I think I have to explain what I mean:
When joining two tables which have many entries sometimes it es better not to use an index on the column used as join criteria.
I have two tables: table A and table B.
Table A has 4.000.000 entries and table B has 700.000 entries.
I have a join of both tables with a numeric column as join criteria.
There is an index on this column in table A.
So I instead of
where (A.col = B.col)I want to use
where (A.col+0 = B.col)in order to prevent Oracle from using the index.
When I use the join in a select statement it works.
But when I use the join as inline view in an update statement I get the error ORA-01779.
When I remove the "+0" the update statement works. (The column col is unique in table B).
Any ideas why this happens?
Thank you very much in advance for any help.
Regards HartmutI think you should post an properly formatted explain plan output using DBMS_XPLAN.DISPLAY including the "Predicate Information" section below the plan to provide more details regarding your query resp. update statement. Please use the \[code\] and \[code\] tags to enhance readability of the output provided:
In SQL*Plus:
SET LINESIZE 130
EXPLAIN PLAN FOR <your statement>;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);Usually if you're using the CBO (cost based optimizer) and have reasonable statistics gathered on the database objects used the optimizer should be able to determine if it is better to use the existing index or not.
Things look different if you don't have statistics, you have outdated/wrong statistics or deliberately still use the RBO (rule based optimizer). In this case you would have to use other means to prevent the index usage, the most obvious would be the already mentioned NO_INDEX or FULL hint.
But I strongly recommend to check in first place why the optimizer apparently seems to choose an inappropriate index access path.
Regards,
Randolf
Oracle related stuff:
http://oracle-randolf.blogspot.com/
SQLTools++ for Oracle:
http://www.sqltools-plusplus.org:7676/
http://sourceforge.net/projects/sqlt-pp/ -
Problem with updating oracle DB with java date thru resultset.updateDate()
URGENT Please
I am facing problem in updating oracle database with java date through resultset.updateDate() method. Can anybody help me please
following code is saving wrong date value (dec 4, 2006 instead of java date jul 4, 2007) in database:
ResultSet rs = stmt.executeQuery("SELECT myDate FROM myTable");
rs.first();
SimpleDateFormat sqlFormat = new SimpleDateFormat("yyyy-mm-dd");
java.util.Date myDate = new Date();
rs.updateDate("myDate", java.sql.Date.valueOf(sqlFormat.format(myDate)));
rs.updateRow();I believe you should use yyyy-MM-dd instead of yyyy-mm-dd. I think MM stands for month while mm stands for minute as per
http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
(If this works, after spending so much of your time trying to solve it, don't hit yourself in the head too hard. I find running out of the room laughing hysterically feels better).
Here is a more standard(?) way of updating:
String sqlStatement=
"update myTable set myDate=? where personID=?"
PreparedStatement p1= connection.prepareStatement(sqlStatement);
p1.setDate(1,new java.sqlDate());
p1.setInt(2, personID);
p1.executeUpdate(); -
How do I go about updating oracle DB table with timestamp from XI using JDBC receiver?
Hi SSG,
1) Generate a string in message mapping for the datetimestamp. You could also do this in the SQL statement by using the oracle SYSDATE function.
2) In the JDBC receiver channel SQL statement you have 2 choices:
- If the string is in the default datetimestamp format for your oracle DB, then you can insert it directly.
- Use the to_date function to convert the string to an Oracle date. I'd recommend this approach. Here's some documentation for this function:
http://www.techonthenet.com/oracle/functions/to_date.php
Thanks,
Jesse -
Deleting/Updating records from an object table in PL/SQL
Hello All,
VER:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
I have created an object and inserted records in it. Is there any way we can delete/update records from it. I do not want to delete based on iteration like delete.collection but I would like to know if we can delete directly from obj like delete from table...
CREATE OR REPLACE TYPE test_type AS OBJECT
col1 number,
col2 varchar2(100)
CREATE OR REPLACE TYPE tab_type is table of test_type;
DECLARE
test_tab tab_type;
l_cnt NUMBER;
BEGIN
select test_type(col1,col2) bulk collect
into test_tab from (select 1 as col1,'test1' as col2 from dual
union all
select 2,'test2' from dual);
IF test_tab.count>0
THEN
DELETE FROM TABLE(CAST(test_tab as tab_type)) a
where a.col1=1;
END IF;
l_cnt := test_tab.count;
END;Thx
Shank.SB,
I have a scenario wherein I insert few records into a collection table. I'm gonna filter few records from collection table based on the filter.
I want to delete the records that didn't match the filter. Right now, I'm inserting the records into a physical table and deleting from there. I do no want to use a physical table. Trying to avoid it.
Would like to delete from collection itself.
DELETE FROM TABLE(CAST(lv_attr_filter_tab as EDMS_CSPP_DISC_REQ_TAB_TYPE))
WHERE NOT EXISTS (SELECT 1
FROM edms_disc_lines_stg edls
WHERE edls.req_id = edrg.request_id
AND edls.disc_line_id = edrg.discount_id
AND UPPER(edls.disc_status) IN ('ACTIVE'); -
Hi all,
I am trying to update database from Jtable. I added Jtable to scrollpane .
My question is..
after updating the Jtable..I want to save the details to database..when I click save button on my screen...how to do that? Please help me out! Thanks in advance..
Here is the code that I wrote...
public class VasuTest extends JFrame {
private boolean DEBUG = true;
Vector column_list = new Vector();
Vector rows = new Vector();
public VasuTest() {
super("VasuTest");
JToolBar toolBar = new JToolBar();
JButton button = null;
button = new JButton("Send Email");
button.setToolTipText("This is the Exit button");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Send Email");
toolBar.add(button);
button = new JButton("Save");
button.setToolTipText("This is the Save button");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Save");
toolBar.add(button);
button = new JButton("Exit");
button.setToolTipText("This is the Exit button");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
toolBar.add(button);
JPanel ContentPane = new JPanel();
ImageIcon i1 = new ImageIcon("Dongle.gif");
JLabel j1 = new JLabel( i1, JLabel.CENTER);
ContentPane.add(j1,BorderLayout.CENTER);
setContentPane(ContentPane);
JDBCT myModel = new JDBCT();
String q = "select a.email_no,a.email_ln_no,b.cust_no,null customer_name,null cdate,a.batch_no,b.purch_ord_no,a.user_part_no,null part_desc,a.user_upgraded_part_no,null prod_id,a.qty,a.price,a.encrypted_sum_id,a.decrypted_sum_id,a.approval_key,a.status_cd,decode(a.status_cd,'APPROVED','true','ERROR','false','PROCESSED','true') approved,null end_cust,null sales_ord,null so_line,null sales_ord_cust,null shipment ,null sales_end_cust_name ,null shipment_line,a.note,null fromcust from upgrade_req_key_s3 a,upgrade_req_s3 b where a.email_no = b.email_no order by a.email_no,a.email_ln_no";
myModel.setQuery();
final Font f = new Font("SansSerif", Font.BOLD, 10);
JTable table = new JTable(myModel);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// Container ContentPane = getContentPane();
int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS;
int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS;
JScrollPane scrollPane = new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setPreferredSize ( new Dimension ( 770, 400 ) );
ContentPane.add(toolBar,BorderLayout.CENTER);
//Add the scroll pane to this window.
ContentPane.add(scrollPane,BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
public class JDBCT extends AbstractTableModel {
Vector cache; // will hold String[] objects...
int colCount;
int rowHeight;
String [] headers;
Connection db;
Connection conn;
Statement statement;
String currentURL;
// public QueryTableModel() {
// cache = new Vector();
// new oracle.jdbc.driver.OracleDriver();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
System.exit(-1);
String url = "jdbc:odbc:c3-erp,s3,s3";
public String getColumnName(int i) {
if (i == 0) { return "Email No" ; } else
if (i == 1) { return "Email Line No.";} else
if (i == 2) { return "Customer";} else
if (i == 3) { return "Customer Name";} else
if (i == 4) { return "Date";} else
if (i == 5) { return "Batch No";} else
if (i == 6) { return "Customer PO";} else
if (i == 7) { return "Upgrade From Part";} else
if (i == 8) { return "Part Description";} else
if (i == 9) { return "Upgrade To Part";} else
if (i == 10) { return "Product Id";} else
if (i == 11) { return "Quantity";} else
if (i == 12) { return "Price";} else
if (i == 13) { return "Encypted Sum ID";} else
if (i == 14) { return "Decrypted Serial No";} else
if (i == 15) { return "Key";} else
if (i == 16) { return "Status";} else
if (i == 17) { return "Approved";} else
if (i == 18) { return "End Customer";} else
if (i == 19) { return "Sales Order";} else
if (i == 20) { return "SO Line";} else
if (i == 21) { return "Sales Order End Customer";} else
if (i == 22) { return "Sales Order End Customer Name";} else
if (i == 23) { return "Shipment";} else
if (i == 24) { return "Shipment Line";} else
if (i == 25) { return "Errors";} else
if (i == 26) { return "From"; }
else {return headers[i-1] ;}
public int getColumnCount() { return colCount; }
public int getRowCount() { return cache.size(); }
//public Class getColumnClass(int c) {
// return getValueAt(0, c).getClass();
// overloaded isCellEditable method so that it returns true
// in reference to a cell being editable.
public boolean isCellEditable(int row, int col) { return true; }
// overloaded setValyeAt which updates the data Vector and
// calls the fireTableRowsUpdated() to notify any listeners
// that data has changed and they need to redraw.
public void setValueAt(Object value, int row, int col) {
((String[])cache.elementAt(row))[col] = (String)value;
fireTableRowsUpdated(row,row);
public void getInfo () {
System.out.println("Row Count is : " + cache.size());
System.out.println("Value at 0,0 is : " + getValueAt(0,0));
// boolean res = isCellEditable(0,0);
// System.out.println("The value of the Boolean result is : " + res);
public Object getValueAt(int row, int col) {
return ((String[])cache.elementAt(row))[col];
// All the real work happens here!
// In a real application, we'd probably perform the query in a separate thread.
public void setQuery() {
cache = new Vector();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection ("jdbc:odbc:c3-erp","s3","s3");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select a.email_no,a.email_ln_no,b.cust_no,null customer_name,null cdate,a.batch_no,b.purch_ord_no,a.user_part_no,null part_desc,a.user_upgraded_part_no,null prod_id,a.qty,a.price,a.encrypted_sum_id,a.decrypted_sum_id,a.approval_key,a.status_cd,decode(a.status_cd,'APPROVED','true','ERROR','false','PROCESSED','true') approved,null end_cust,null sales_ord,null so_line,null sales_ord_cust,null shipment ,null sales_end_cust_name ,null shipment_line,a.note,null fromcust from upgrade_req_key_s3 a,upgrade_req_s3 b where a.email_no = b.email_no order by a.email_no,a.email_ln_no");
ResultSetMetaData meta = rs.getMetaData();
colCount = meta.getColumnCount();
String[] record = new String[27];
// Now we must rebuild the headers array with the new column name
headers = new String[27];
for (int h=0; h < 27; h++) {
// headers[h-1] = meta.getColumnName(h);
headers[h] = getColumnName(h);
// and file the cache with the record from our query. This would
// be practical if we were expecting a few million records to our
// response query, but we are not so we can do this.
while(rs.next()) {
for (int i=0; i < colCount; i++) {
record[i] = rs.getString(i + 1);
cache.addElement(record);
// Get the FIRST column of the table tableView
// TableColumn column0 = table.getColumn(cache.elementAt(0));
// Set the cell editor as non editable.
// column0.setCellEditor(new EditableCellEditor(new JComboBox(), true));
fireTableChanged(null); // notify everyone the we had a new table.
catch (Exception e) {
cache = new Vector(); // blank it out and keep going.
e.printStackTrace();
public static void main(String[] args) {
VasuTest frame = new VasuTest();
frame.pack();
frame.setVisible(true);
}When you click on the save button, you need to go through the model and retrieve the values getValueAt().
Convert to whatever type you want since getValueAt() returns type Object and update the DB. -
I'm having a problem updating a row on a backend database using a dataset which contains the datacolumns as parameters with a TableMapping object. I'm using this in conjunction with the ODT.net tool.
I've used this technique hundreds of times with a SQL Server backend, with no problems whatsoever. I'm not doing anything different.
Here is the SQL I'm executing:
<code>
PROCEDURE proc_prUpdate
p_CALLID IN CALL.CALLID%TYPE,
p_STARTTIME IN CALL.STARTTIME%TYPE,
p_STANDARD IN CALL.STANDARD%TYPE,
p_DURATION IN CALL.DURATION%TYPE,
p_VOYCALLID IN CALL.VOYCALLID%TYPE,
p_LESID IN CALL.LESID%TYPE,
p_SERVICETYPE IN CALL.SERVICETYPE%TYPE,
p_MESCATEGORY IN CALL.MESCATEGORY%TYPE,
p_MOBILE IN CALL.MOBILE%TYPE,
p_REGIONID IN CALL.REGIONID%TYPE,
p_TXCHANNEL IN CALL.TXCHANNEL%TYPE,
p_RXCHANNEL IN CALL.RXCHANNEL%TYPE,
p_SPOTBEAM IN CALL.SPOTBEAM%TYPE,
p_TERMINALID IN CALL.TERMINALID%TYPE,
p_RETURNID IN CALL.RETURNID%TYPE,
p_TELEPHONENUMBER IN CALL.TELEPHONENUMBER%TYPE,
p_PID IN CALL.PID%TYPE,
p_TIMEDURATION IN CALL.TIMEDURATION%TYPE,
p_LESNAME IN CALL.LESNAME%TYPE,
p_MESNAME IN CALL.MESNAME%TYPE,
p_CITY IN CALL.CITY%TYPE,
p_COUNTRY IN CALL.COUNTRY%TYPE,
p_TARGETID IN CALL.TARGETID%TYPE,
p_MESID IN CALL.MESID%TYPE,
p_DBSERVERID IN CALL.DBSERVERID%TYPE
AS
BEGIN
update CALL set
STARTTIME = p_STARTTIME, STANDARD = p_STANDARD, DURATION = p_DURATION, VOYCALLID = p_VOYCALLID, LESID = p_LESID, SERVICETYPE = p_SERVICETYPE, MESCATEGORY = p_MESCATEGORY, MOBILE = p_MOBILE, REGIONID = p_REGIONID, TXCHANNEL = p_TXCHANNEL, RXCHANNEL = p_RXCHANNEL, SPOTBEAM = p_SPOTBEAM, TERMINALID = p_TERMINALID, RETURNID = p_RETURNID, TELEPHONENUMBER = p_TELEPHONENUMBER, PID = p_PID, TIMEDURATION = p_TIMEDURATION, LESNAME = p_LESNAME, MESNAME = p_MESNAME, CITY = p_CITY, COUNTRY = p_COUNTRY, TARGETID = p_TARGETID, MESID = p_MESID, DBSERVERID = p_DBSERVERID
where CALLID = p_CALLID;
END;
</code>
The following is in the generated code for the DataAdapter. Here are all the parameters for the update command:
<code>
Dim OracleParameter29 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter30 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter31 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter32 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter33 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter34 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter35 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter36 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter37 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter38 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter39 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter40 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter41 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter42 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter43 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter44 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter45 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter46 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter47 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter48 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter49 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter50 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter51 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter52 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter53 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParamete
</code>
The following is the code for the parameter list in the generated code:
<code>
Me.updateOracleCommand1.CommandText = "CALL_PKG.PROC_PRUPDATE"
Me.updateOracleCommand1.CommandType = System.Data.CommandType.StoredProcedure
Me.updateOracleCommand1.Connection = Me.oracleConnection1
OracleParameter29.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter29.ParameterName = "P_CALLID"
OracleParameter29.SourceColumn = "P_CALLID"
OracleParameter30.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Date
OracleParameter30.ParameterName = "P_STARTTIME"
OracleParameter30.SourceColumn = "P_STARTTIME"
OracleParameter31.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter31.ParameterName = "P_STANDARD"
OracleParameter31.SourceColumn = "P_STANDARD"
OracleParameter32.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter32.ParameterName = "P_DURATION"
OracleParameter32.SourceColumn = "P_DURATION"
OracleParameter33.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter33.ParameterName = "P_VOYCALLID"
OracleParameter33.SourceColumn = "P_VOYCALLID"
OracleParameter34.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter34.ParameterName = "P_LESID"
OracleParameter34.SourceColumn = "P_LESID"
OracleParameter35.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter35.ParameterName = "P_SERVICETYPE"
OracleParameter35.SourceColumn = "P_SERVICETYPE"
OracleParameter36.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter36.ParameterName = "P_MESCATEGORY"
OracleParameter36.SourceColumn = "P_MESCATEGORY"
OracleParameter37.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter37.ParameterName = "P_MOBILE"
OracleParameter37.SourceColumn = "P_MOBILE"
OracleParameter38.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter38.ParameterName = "P_REGIONID"
OracleParameter38.SourceColumn = "P_REGIONID"
OracleParameter39.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter39.ParameterName = "P_TXCHANNEL"
OracleParameter39.SourceColumn = "P_TXCHANNEL"
OracleParameter40.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter40.ParameterName = "P_RXCHANNEL"
OracleParameter40.SourceColumn = "P_RXCHANNEL"
OracleParameter41.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter41.ParameterName = "P_SPOTBEAM"
OracleParameter41.SourceColumn = "P_SPOTBEAM"
OracleParameter42.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter42.ParameterName = "P_TERMINALID"
OracleParameter42.SourceColumn = "P_TERMINALID"
OracleParameter43.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter43.ParameterName = "P_RETURNID"
OracleParameter43.SourceColumn = "P_RETURNID"
OracleParameter44.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter44.ParameterName = "P_TELEPHONENUMBER"
OracleParameter44.SourceColumn = "P_TELEPHONENUMBER"
OracleParameter45.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter45.ParameterName = "P_PID"
OracleParameter45.SourceColumn = "P_PID"
OracleParameter46.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter46.ParameterName = "P_TIMEDURATION"
OracleParameter46.SourceColumn = "P_TIMEDURATION"
OracleParameter47.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter47.ParameterName = "P_LESNAME"
OracleParameter47.SourceColumn = "P_LESNAME"
OracleParameter48.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter48.ParameterName = "P_MESNAME"
OracleParameter48.SourceColumn = "P_MESNAME"
OracleParameter49.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter49.ParameterName = "P_CITY"
OracleParameter49.SourceColumn = "P_CITY"
OracleParameter50.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter50.ParameterName = "P_COUNTRY"
OracleParameter50.SourceColumn = "P_COUNTRY"
OracleParameter51.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter51.ParameterName = "P_TARGETID"
OracleParameter51.SourceColumn = "P_TARGETID"
OracleParameter52.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter52.ParameterName = "P_MESID"
OracleParameter52.SourceColumn = "P_MESID"
OracleParameter53.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter53.ParameterName = "P_DBSERVERID"
OracleParameter53.SourceColumn = "P_DBSERVERID"
Me.updateOracleCommand1.Parameters.Add(OracleParameter29)
Me.updateOracleCommand1.Parameters.Add(OracleParameter30)
Me.updateOracleCommand1.Parameters.Add(OracleParameter31)
Me.updateOracleCommand1.Parameters.Add(OracleParameter32)
Me.updateOracleCommand1.Parameters.Add(OracleParameter33)
Me.updateOracleCommand1.Parameters.Add(OracleParameter34)
Me.updateOracleCommand1.Parameters.Add(OracleParameter35)
Me.updateOracleCommand1.Parameters.Add(OracleParameter36)
Me.updateOracleCommand1.Parameters.Add(OracleParameter37)
Me.updateOracleCommand1.Parameters.Add(OracleParameter38)
Me.updateOracleCommand1.Parameters.Add(OracleParameter39)
Me.updateOracleCommand1.Parameters.Add(OracleParameter40)
Me.updateOracleCommand1.Parameters.Add(OracleParameter41)
Me.updateOracleCommand1.Parameters.Add(OracleParameter42)
Me.updateOracleCommand1.Parameters.Add(OracleParameter43)
Me.updateOracleCommand1.Parameters.Add(OracleParameter44)
Me.updateOracleCommand1.Parameters.Add(OracleParameter45)
Me.updateOracleCommand1.Parameters.Add(OracleParameter46)
Me.updateOracleCommand1.Parameters.Add(OracleParameter47)
Me.updateOracleCommand1.Parameters.Add(OracleParameter48)
Me.updateOracleCommand1.Parameters.Add(OracleParameter49)
Me.updateOracleCommand1.Parameters.Add(OracleParameter50)
Me.updateOracleCommand1.Parameters.Add(OracleParameter51)
Me.updateOracleCommand1.Parameters.Add(OracleParameter52)
Me.updateOracleCommand1.Parameters.Add(OracleParameter53)
</code>
Here is the code I'm running to try the update:
<code>
OracleDataAdapter1.TableMappings.Add("Table", "CALL")
OracleDataAdapter1.UpdateCommand.Parameters.Item(0).Value = Call11._Call.Item(0).CALLID
OracleDataAdapter1.UpdateCommand.Parameters.Item(2).Value = Call11._Call.Item(0).STANDARD
Call11._Call.Item(0).STARTTIME = DataGrid1.Item(0, 1)
Call11._Call.Item(0).STANDARD = DataGrid1.Item(0, 2)
Call11._Call.Item(0).DURATION = DataGrid1.Item(0, 3)
Call11._Call.Item(0).LESID = DataGrid1.Item(0, 4)
Call11._Call.Item(0).SERVICETYPE = DataGrid1.Item(0, 5)
Call11._Call.Item(0).MESCATEGORY = DataGrid1.Item(0, 6)
Call11._Call.Item(0).MOBILE = DataGrid1.Item(0, 7)
Call11._Call.Item(0).REGIONID = DataGrid1.Item(0, 8)
Call11._Call.Item(0).MESID = DataGrid1.Item(0, 22)
Call11._Call.Item(0).CALLID = Convert.ToInt32(TextBox1.Text)
OracleDataAdapter1.Update(Call11)
</code>
I shouldn't need to add the above lines:
<code>
OracleDataAdapter1.UpdateCommand.Parameters.Item(0).Value = Call11._Call.Item(0).CALLID
OracleDataAdapter1.UpdateCommand.Parameters.Item(2).Value = Call11._Call.Item(0).STANDARD
</code>
, but I added them to show you the value of the parms going in.
When debugging, the following is my output:
?Call11._Call.Item(0).RowState
Modified
?Call11._Call.Rows.Count
1
You can see that the rowstate is set to "Modified" and the rowcount is 1
?OracleDataAdapter1.UpdateCommand.Parameters.Item(0).Value
8612967 {Long}
[Long]: 8612967 {Long}
?OracleDataAdapter1.UpdateCommand.Parameters.Item(2).Value
"B" {String}
String: "B"
The above, are the values of the first & third parms before the "Update" statement is executed.
?OracleDataAdapter1.UpdateCommand.Parameters.Item(0).Value
{System.DBNull}
[System.DBNull]: {System.DBNull}
?OracleDataAdapter1.UpdateCommand.Parameters.Item(2).Value
{System.DBNull}
[System.DBNull]: {System.DBNull}
The above are the values of the first & third parms after the "Update" statement is executed.
<code>
OracleDataAdapter1.Update(Call11)
</code>
Notice the values are NULL. why???
Below, is the value of my TableMapping object:
?OracleDataAdapter1.TableMappings.Count
1
?OracleDataAdapter1.TableMappings.Item(0)
{System.Data.Common.DataTableMapping}
ColumnMappings: {System.Data.Common.DataColumnMappingCollection}
DataSetTable: "CALL"
SourceTable: "Table"
The datatable name of the strongly typed dataset I am using is "CALL".
When I change the update statement from:
<code>
OracleDataAdapter1.Update(Call11)
</code>
to
<code>
OracleDataAdapter1.UpdateCommand.ExecuteNonQuery()
</code>
the update works (using the latter), but returns a -1 for the records affected (-1 typically means the command can't decipher the action of the command that just took place).
I might add that I successfully executed a similiar "update" the same way via a dataset prior to what I'm trying to do here.
Why isn't the backend datasource being updated? I do not get any errors during the update statement execpt for the -1 for the records affected?I shortened the package spec to the following:
<code>
PROCEDURE proc_prUpdate
p_CALLID IN CALL.CALLID%TYPE,
p_STANDARD IN CALL.STANDARD%TYPE
</code>
I shortened the package body to the following:
<code>
PROCEDURE proc_prUpdate
p_CALLID IN CALL.CALLID%TYPE,
p_STANDARD IN CALL.STANDARD%TYPE
AS
BEGIN
update CALL set
STANDARD = p_STANDARD
where CALLID = p_CALLID;
END;
</code>
When I execute the update statement from the associated data adapter, it updates the db correctly, but still gives me a -1 for the records affected.
When I execute the exact same sql with the record inside a strongly typed dataset, it doesn't update and I still get the -1 for the records affected.
While debugging, the following output is shown for the parameter list:
?daORA.UpdateCommand.Parameters.Item(0)
{Oracle.DataAccess.Client.OracleParameter}
ArrayBindSize: Nothing
ArrayBindStatus: Nothing
CollectionType: None
DbType: Decimal
Direction: Input
IsNullable: False
Offset: 0
OracleDbType: Decimal
ParameterName: "P_CALLID"
Precision: 0
Scale: 0
Size: 0
SourceColumn: "P_CALLID"
SourceVersion: Original
Status: Success
Value: 8612967 {Long}
?daORA.UpdateCommand.Parameters.Item(1)
{Oracle.DataAccess.Client.OracleParameter}
ArrayBindSize: Nothing
ArrayBindStatus: Nothing
CollectionType: None
DbType: String
Direction: Input
IsNullable: False
Offset: 0
OracleDbType: Varchar2
ParameterName: "P_STANDARD"
Precision: 0
Scale: 0
Size: 0
SourceColumn: "P_STANDARD"
SourceVersion: Current
Status: Success
Value: "c" {String}
?ds.Tables(0).Rows(0).RowState
Modified
Two questions:
Even though it updates successfully in the first iteration, how come I get the -1 for the records affected?
In the second iteration, how come it is not updating the backend datasource and how come I still get the -1 for the records affected? You can see that the rowstate is set to modified.
Is there a problem with the ODP.Net data provider not being able to update a backend datasource with values inside of a datatable during a "da.update" statement?
With MS SQL Server data provider, it updates the data flawlessly when I put the tables inside of a MS SQL Server. -
Update problem from a dataset with ODT.
I'm having a problem updating a row on a backend database using a dataset which contains the datacolumns as parameters with a TableMapping object. I'm using this in conjunction with the ODT.net tool.
I've used this technique hundreds of times with a SQL Server backend, with no problems whatsoever. I'm not doing anything different.
Here is the SQL I'm executing:
<code>
PROCEDURE proc_prUpdate
p_CALLID IN CALL.CALLID%TYPE,
p_STARTTIME IN CALL.STARTTIME%TYPE,
p_STANDARD IN CALL.STANDARD%TYPE,
p_DURATION IN CALL.DURATION%TYPE,
p_VOYCALLID IN CALL.VOYCALLID%TYPE,
p_LESID IN CALL.LESID%TYPE,
p_SERVICETYPE IN CALL.SERVICETYPE%TYPE,
p_MESCATEGORY IN CALL.MESCATEGORY%TYPE,
p_MOBILE IN CALL.MOBILE%TYPE,
p_REGIONID IN CALL.REGIONID%TYPE,
p_TXCHANNEL IN CALL.TXCHANNEL%TYPE,
p_RXCHANNEL IN CALL.RXCHANNEL%TYPE,
p_SPOTBEAM IN CALL.SPOTBEAM%TYPE,
p_TERMINALID IN CALL.TERMINALID%TYPE,
p_RETURNID IN CALL.RETURNID%TYPE,
p_TELEPHONENUMBER IN CALL.TELEPHONENUMBER%TYPE,
p_PID IN CALL.PID%TYPE,
p_TIMEDURATION IN CALL.TIMEDURATION%TYPE,
p_LESNAME IN CALL.LESNAME%TYPE,
p_MESNAME IN CALL.MESNAME%TYPE,
p_CITY IN CALL.CITY%TYPE,
p_COUNTRY IN CALL.COUNTRY%TYPE,
p_TARGETID IN CALL.TARGETID%TYPE,
p_MESID IN CALL.MESID%TYPE,
p_DBSERVERID IN CALL.DBSERVERID%TYPE
AS
BEGIN
update CALL set
STARTTIME = p_STARTTIME, STANDARD = p_STANDARD, DURATION = p_DURATION, VOYCALLID = p_VOYCALLID, LESID = p_LESID, SERVICETYPE = p_SERVICETYPE, MESCATEGORY = p_MESCATEGORY, MOBILE = p_MOBILE, REGIONID = p_REGIONID, TXCHANNEL = p_TXCHANNEL, RXCHANNEL = p_RXCHANNEL, SPOTBEAM = p_SPOTBEAM, TERMINALID = p_TERMINALID, RETURNID = p_RETURNID, TELEPHONENUMBER = p_TELEPHONENUMBER, PID = p_PID, TIMEDURATION = p_TIMEDURATION, LESNAME = p_LESNAME, MESNAME = p_MESNAME, CITY = p_CITY, COUNTRY = p_COUNTRY, TARGETID = p_TARGETID, MESID = p_MESID, DBSERVERID = p_DBSERVERID
where CALLID = p_CALLID;
END;
</code>
The following is in the generated code for the DataAdapter. Here are all the parameters for the update command:
<code>
Dim OracleParameter29 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter30 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter31 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter32 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter33 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter34 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter35 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter36 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter37 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter38 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter39 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter40 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter41 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter42 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter43 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter44 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter45 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter46 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter47 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter48 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter49 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter50 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter51 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter52 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
Dim OracleParameter53 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParamete
</code>
The following is the code for the parameter list in the generated code:
<code>
Me.updateOracleCommand1.CommandText = "CALL_PKG.PROC_PRUPDATE"
Me.updateOracleCommand1.CommandType = System.Data.CommandType.StoredProcedure
Me.updateOracleCommand1.Connection = Me.oracleConnection1
OracleParameter29.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter29.ParameterName = "P_CALLID"
OracleParameter29.SourceColumn = "P_CALLID"
OracleParameter30.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Date
OracleParameter30.ParameterName = "P_STARTTIME"
OracleParameter30.SourceColumn = "P_STARTTIME"
OracleParameter31.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter31.ParameterName = "P_STANDARD"
OracleParameter31.SourceColumn = "P_STANDARD"
OracleParameter32.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter32.ParameterName = "P_DURATION"
OracleParameter32.SourceColumn = "P_DURATION"
OracleParameter33.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter33.ParameterName = "P_VOYCALLID"
OracleParameter33.SourceColumn = "P_VOYCALLID"
OracleParameter34.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter34.ParameterName = "P_LESID"
OracleParameter34.SourceColumn = "P_LESID"
OracleParameter35.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter35.ParameterName = "P_SERVICETYPE"
OracleParameter35.SourceColumn = "P_SERVICETYPE"
OracleParameter36.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter36.ParameterName = "P_MESCATEGORY"
OracleParameter36.SourceColumn = "P_MESCATEGORY"
OracleParameter37.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter37.ParameterName = "P_MOBILE"
OracleParameter37.SourceColumn = "P_MOBILE"
OracleParameter38.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter38.ParameterName = "P_REGIONID"
OracleParameter38.SourceColumn = "P_REGIONID"
OracleParameter39.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter39.ParameterName = "P_TXCHANNEL"
OracleParameter39.SourceColumn = "P_TXCHANNEL"
OracleParameter40.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter40.ParameterName = "P_RXCHANNEL"
OracleParameter40.SourceColumn = "P_RXCHANNEL"
OracleParameter41.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter41.ParameterName = "P_SPOTBEAM"
OracleParameter41.SourceColumn = "P_SPOTBEAM"
OracleParameter42.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter42.ParameterName = "P_TERMINALID"
OracleParameter42.SourceColumn = "P_TERMINALID"
OracleParameter43.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter43.ParameterName = "P_RETURNID"
OracleParameter43.SourceColumn = "P_RETURNID"
OracleParameter44.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter44.ParameterName = "P_TELEPHONENUMBER"
OracleParameter44.SourceColumn = "P_TELEPHONENUMBER"
OracleParameter45.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter45.ParameterName = "P_PID"
OracleParameter45.SourceColumn = "P_PID"
OracleParameter46.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter46.ParameterName = "P_TIMEDURATION"
OracleParameter46.SourceColumn = "P_TIMEDURATION"
OracleParameter47.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter47.ParameterName = "P_LESNAME"
OracleParameter47.SourceColumn = "P_LESNAME"
OracleParameter48.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter48.ParameterName = "P_MESNAME"
OracleParameter48.SourceColumn = "P_MESNAME"
OracleParameter49.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter49.ParameterName = "P_CITY"
OracleParameter49.SourceColumn = "P_CITY"
OracleParameter50.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
OracleParameter50.ParameterName = "P_COUNTRY"
OracleParameter50.SourceColumn = "P_COUNTRY"
OracleParameter51.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter51.ParameterName = "P_TARGETID"
OracleParameter51.SourceColumn = "P_TARGETID"
OracleParameter52.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Char
OracleParameter52.ParameterName = "P_MESID"
OracleParameter52.SourceColumn = "P_MESID"
OracleParameter53.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Decimal
OracleParameter53.ParameterName = "P_DBSERVERID"
OracleParameter53.SourceColumn = "P_DBSERVERID"
Me.updateOracleCommand1.Parameters.Add(OracleParameter29)
Me.updateOracleCommand1.Parameters.Add(OracleParameter30)
Me.updateOracleCommand1.Parameters.Add(OracleParameter31)
Me.updateOracleCommand1.Parameters.Add(OracleParameter32)
Me.updateOracleCommand1.Parameters.Add(OracleParameter33)
Me.updateOracleCommand1.Parameters.Add(OracleParameter34)
Me.updateOracleCommand1.Parameters.Add(OracleParameter35)
Me.updateOracleCommand1.Parameters.Add(OracleParameter36)
Me.updateOracleCommand1.Parameters.Add(OracleParameter37)
Me.updateOracleCommand1.Parameters.Add(OracleParameter38)
Me.updateOracleCommand1.Parameters.Add(OracleParameter39)
Me.updateOracleCommand1.Parameters.Add(OracleParameter40)
Me.updateOracleCommand1.Parameters.Add(OracleParameter41)
Me.updateOracleCommand1.Parameters.Add(OracleParameter42)
Me.updateOracleCommand1.Parameters.Add(OracleParameter43)
Me.updateOracleCommand1.Parameters.Add(OracleParameter44)
Me.updateOracleCommand1.Parameters.Add(OracleParameter45)
Me.updateOracleCommand1.Parameters.Add(OracleParameter46)
Me.updateOracleCommand1.Parameters.Add(OracleParameter47)
Me.updateOracleCommand1.Parameters.Add(OracleParameter48)
Me.updateOracleCommand1.Parameters.Add(OracleParameter49)
Me.updateOracleCommand1.Parameters.Add(OracleParameter50)
Me.updateOracleCommand1.Parameters.Add(OracleParameter51)
Me.updateOracleCommand1.Parameters.Add(OracleParameter52)
Me.updateOracleCommand1.Parameters.Add(OracleParameter53)
</code>
Here is the code I'm running to try the update:
<code>
OracleDataAdapter1.TableMappings.Add("Table", "CALL")
OracleDataAdapter1.UpdateCommand.Parameters.Item(0).Value = Call11._Call.Item(0).CALLID
OracleDataAdapter1.UpdateCommand.Parameters.Item(2).Value = Call11._Call.Item(0).STANDARD
Call11._Call.Item(0).STARTTIME = DataGrid1.Item(0, 1)
Call11._Call.Item(0).STANDARD = DataGrid1.Item(0, 2)
Call11._Call.Item(0).DURATION = DataGrid1.Item(0, 3)
Call11._Call.Item(0).LESID = DataGrid1.Item(0, 4)
Call11._Call.Item(0).SERVICETYPE = DataGrid1.Item(0, 5)
Call11._Call.Item(0).MESCATEGORY = DataGrid1.Item(0, 6)
Call11._Call.Item(0).MOBILE = DataGrid1.Item(0, 7)
Call11._Call.Item(0).REGIONID = DataGrid1.Item(0, 8)
Call11._Call.Item(0).MESID = DataGrid1.Item(0, 22)
Call11._Call.Item(0).CALLID = Convert.ToInt32(TextBox1.Text)
OracleDataAdapter1.Update(Call11)
</code>
I shouldn't need to add the above lines:
<code>
OracleDataAdapter1.UpdateCommand.Parameters.Item(0).Value = Call11._Call.Item(0).CALLID
OracleDataAdapter1.UpdateCommand.Parameters.Item(2).Value = Call11._Call.Item(0).STANDARD
</code>
, but I added them to show you the value of the parms going in.
When debugging, the following is my output:
?Call11._Call.Item(0).RowState
Modified
?Call11._Call.Rows.Count
1
You can see that the rowstate is set to "Modified" and the rowcount is 1
?OracleDataAdapter1.UpdateCommand.Parameters.Item(0).Value
8612967 {Long}
[Long]: 8612967 {Long}
?OracleDataAdapter1.UpdateCommand.Parameters.Item(2).Value
"B" {String}
String: "B"
The above, are the values of the first & third parms before the "Update" statement is executed.
?OracleDataAdapter1.UpdateCommand.Parameters.Item(0).Value
{System.DBNull}
[System.DBNull]: {System.DBNull}
?OracleDataAdapter1.UpdateCommand.Parameters.Item(2).Value
{System.DBNull}
[System.DBNull]: {System.DBNull}
The above are the values of the first & third parms after the "Update" statement is executed.
<code>
OracleDataAdapter1.Update(Call11)
</code>
Notice the values are NULL. why???
Below, is the value of my TableMapping object:
?OracleDataAdapter1.TableMappings.Count
1
?OracleDataAdapter1.TableMappings.Item(0)
{System.Data.Common.DataTableMapping}
ColumnMappings: {System.Data.Common.DataColumnMappingCollection}
DataSetTable: "CALL"
SourceTable: "Table"
The datatable name of the strongly typed dataset I am using is "CALL".
When I change the update statement from:
<code>
OracleDataAdapter1.Update(Call11)
</code>
to
<code>
OracleDataAdapter1.UpdateCommand.ExecuteNonQuery()
</code>
the update works (using the latter), but returns a -1 for the records affected (-1 typically means the command can't decipher the action of the command that just took place).
I might add that I successfully executed a similiar "update" the same way via a dataset prior to what I'm trying to do here.
Why isn't the backend datasource being updated? I do not get any errors during the update statement execpt for the -1 for the records affected?I shortened the package spec to the following:
<code>
PROCEDURE proc_prUpdate
p_CALLID IN CALL.CALLID%TYPE,
p_STANDARD IN CALL.STANDARD%TYPE
</code>
I shortened the package body to the following:
<code>
PROCEDURE proc_prUpdate
p_CALLID IN CALL.CALLID%TYPE,
p_STANDARD IN CALL.STANDARD%TYPE
AS
BEGIN
update CALL set
STANDARD = p_STANDARD
where CALLID = p_CALLID;
END;
</code>
When I execute the update statement from the associated data adapter, it updates the db correctly, but still gives me a -1 for the records affected.
When I execute the exact same sql with the record inside a strongly typed dataset, it doesn't update and I still get the -1 for the records affected.
While debugging, the following output is shown for the parameter list:
?daORA.UpdateCommand.Parameters.Item(0)
{Oracle.DataAccess.Client.OracleParameter}
ArrayBindSize: Nothing
ArrayBindStatus: Nothing
CollectionType: None
DbType: Decimal
Direction: Input
IsNullable: False
Offset: 0
OracleDbType: Decimal
ParameterName: "P_CALLID"
Precision: 0
Scale: 0
Size: 0
SourceColumn: "P_CALLID"
SourceVersion: Original
Status: Success
Value: 8612967 {Long}
?daORA.UpdateCommand.Parameters.Item(1)
{Oracle.DataAccess.Client.OracleParameter}
ArrayBindSize: Nothing
ArrayBindStatus: Nothing
CollectionType: None
DbType: String
Direction: Input
IsNullable: False
Offset: 0
OracleDbType: Varchar2
ParameterName: "P_STANDARD"
Precision: 0
Scale: 0
Size: 0
SourceColumn: "P_STANDARD"
SourceVersion: Current
Status: Success
Value: "c" {String}
?ds.Tables(0).Rows(0).RowState
Modified
Two questions:
Even though it updates successfully in the first iteration, how come I get the -1 for the records affected?
In the second iteration, how come it is not updating the backend datasource and how come I still get the -1 for the records affected? You can see that the rowstate is set to modified.
Is there a problem with the ODP.Net data provider not being able to update a backend datasource with values inside of a datatable during a "da.update" statement?
With MS SQL Server data provider, it updates the data flawlessly when I put the tables inside of a MS SQL Server.
Maybe you are looking for
-
Am I allowed to install flash on more than one computer?
I have the student edition of adobe flash cs3 and I currently have it installed on my desktop. I was wondering if it is legal to also install it on my labtop. It is for personal use, I don't know if that changes anything. I'm sure this is somewhere o
-
Slow Select Query - Where clause contains Seconday index field +other flds
Hi friends, The below query is taking about an Hour to execute in production server when there are about 6 Million records in PLAF table. I have verified the trace in ST05 and the correct secondary index (Material Matnr + Plant Plwrk) is being select
-
My audio spontaneously stopped working
Hey everyone, I've been recently editing together a feature film and had several different timeline sequences for different scenes (one had scenes 1-9, another 10-14, etc.) I opted to combine two sequences as they were just about locked and copy/past
-
"The java class is not found:" post clone
Hi. I've just cloned an 11.5.10.2 environment from one AIX5.2 server running 9.2.0.7 to another server at the same AIX and RDBMS level. After running the clone steps, the application was automatically started and I was able to access it via Self Serv
-
hi any new update available for nokia c2-03 after 7.63