الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Java.sql.sqlexception: Ora-01008: ليست كل المتغيرات مربوطة

Featured Replies

بتاريخ:

هذه الرسالة تظهر من هذا الكود  مع العلم كود ال sql تم اختياره بنجاح

 

                System.out.println("rrrrrrr  "+v_id);

                System.out.println("qqqqqq  "+v_date);        
               String username = "mon";
               String password = "mon";
               String thinConn = "jdbc:oracle:thin:@localhost:1521:ORCL";
               String sql= "Begin\n" + 
                           "Update Fin_Year F\n" + 
                            "Set F.Sys_Date =:v_date\n" + 
                            "Where \n" + 
                            "F.Date_Id=:v_id ;\n" + 
                             "commit;\n"+ 
                            "END;";                   
                 try {
                          
                   DriverManager.registerDriver(new OracleDriver());
                   Connection conn = DriverManager.getConnection(thinConn,username,password);
                  
                   Statement   stat=conn.createStatement();      
                  
                   stat.executeUpdate(sql);
                          FacesMessage msg = new FacesMessage("تم تعديل التاريخ");
                          FacesContext.getCurrentInstance().addMessage(null, msg); 
                          conn.close();
                          stat.close();
                        
                      } catch (SQLException e) {
                          // TODO: Add catch code
                          e.printStackTrace();
                          System.out.println("xxxxx "+sql+"yyyyy "+e);
                          FacesMessage msg = new FacesMessage(" لم يتم تعديل التاريخ");
                          FacesContext.getCurrentInstance().addMessage(null, msg); 
                      }
                             
                             return "main";        
                         }                            
              
               FacesMessage msg = new FacesMessage("لا توجد بيانات");
               FacesContext.getCurrentInstance().addMessage(null, msg); 
               return null;
           }
بتاريخ:
  • كاتب الموضوع

الرسالة هى 

 

java.sql.SQLException: ORA-01008: ليست كل المتغيرات مربوطة

بتاريخ:

بدل هذا السطر 

stat.executeUpdate(sql);

تكتب 

stat.executeUpdate();
بتاريخ:
  • كاتب الموضوع

شكرا لتفضلك بالاجابة

 

للاسف يرفض الكتابة بهذا الشكل       stat.executeUpdate();

بتاريخ:

حضرتك تستخدم Statement لذلك يرفض 

تستخدم  CallableStatement 

لماذا لا تراجع المثال المتعلق بPl/Sql  داخل الADF  لترى الكود حتى تتجنب مرحلة sql  وتنفذ بشكل صحيح 

بتاريخ:
  • كاتب الموضوع

شكرا لحضرتك

حضرتك انا قطعت شوط كبير لغاية ما وصلت للنتيجة بالاضافة قابلتنى مشاكل كثيرة فى مثال  pl/sql بسبب كثرة ال validation اللى انا عامله قبل ما احفظ التاريخ لو فتحت لحضرة الكود كله اللى قبل عملية ال حفظ حتشوفيه 

 

وانا دلوقتى غيرت فى كود sql    وطلع خطأ جديد بس نفس جملة ال update  والخطأ هو

Begin

Update Fin_Year F
Set F.Sys_Date =2015-12-16
Where 
F.Date_Id=1;
commit;
END;yyyyy java.sql.SQLException: ORA-06550: سطر 3 ، عمود  24 : 
PL/SQL: ORA-00932: أنواع بيانات غير متسقة: متوقع DATE تم الحصول على NUMBER
ORA-06550: سطر 2 ، عمود  1 : 
PL/SQL: SQL Statement ignored
بتاريخ:
  • كاتب الموضوع

استقبل المتغير v_id صح والمشكلة الان فى التاريخ     اللى على هذه الصورة                      v_date3=v_date.timestampValue();

 

الرسالة التى تظهر       java.sql.SQLException: ORA-06550: سطر 3 ، عمود  27 : 

PL/SQL: ORA-00933: أمر SQL  لم ينتهي بطريقة صحيحة
ORA-06550: سطر 2 ، عمود  1 : 
PL/SQL: SQL Statement ignored

 

               String sql=                      
                   "Begin\n" + 
                   "Update Fin_Year F\n" +
                   "Set F.Sys_Date="+getV_date3()+"\n" +
                   "Where \n" +
                   "F.Date_Id="+v_id+";\n" +
                   "Commit;\n" +
                   "end;";
بتاريخ:
  • كاتب الموضوع

مشكلة فى هذا الكود   فى المتغير التاريخ

 

Begin
Update Fin_Year F
Set F.Sys_Date=2015-11-18
Where 
F.Date_Id=1 ;
Commit;
End;yyyyy java.sql.SQLException: ORA-06550: سطر 3 ، عمود  23 : 
PL/SQL: ORA-00932: أنواع بيانات غير متسقة: متوقع DATE تم الحصول على NUMBER
ORA-06550: سطر 2 ، عمود  1 : 
PL/SQL: SQL Statement ignored
 
 
 
والكود 
 
 
 
 
 
 
package view.backing;
 
 
import javax.faces.application.FacesMessage;
 
import javax.faces.context.FacesContext;
 
import oracle.adf.model.BindingContext;
import oracle.adf.model.binding.DCBindingContainer;
 
import oracle.jbo.Row;
 
import oracle.jbo.domain.Number;
 
import java.sql.Connection;
 
 
 
import java.sql.DriverManager;
 
import java.sql.SQLException;
import java.sql.Statement;
 
 
 
 
import model.DateInfo;
 
 
import oracle.adf.view.rich.component.rich.RichDocument;
import oracle.adf.view.rich.component.rich.RichForm;
import oracle.adf.view.rich.component.rich.data.RichTable;
import oracle.adf.view.rich.component.rich.input.RichInputDate;
import oracle.adf.view.rich.component.rich.input.RichInputText;
import oracle.adf.view.rich.component.rich.layout.RichPanelFormLayout;
import oracle.adf.view.rich.component.rich.layout.RichPanelGroupLayout;
import oracle.adf.view.rich.component.rich.layout.RichPanelStretchLayout;
import oracle.adf.view.rich.component.rich.nav.RichCommandButton;
import oracle.adf.view.rich.component.rich.output.RichMessages;
 
import oracle.adf.view.rich.component.rich.output.RichOutputText;
 
 
 
 
 
import oracle.adf.view.rich.component.rich.layout.RichPanelLabelAndMessage;
import oracle.adf.view.rich.component.rich.nav.RichCommandLink;
 
 
import oracle.jbo.domain.Date;
 
import oracle.jdbc.driver.OracleDriver;
 
 
 
 
import org.apache.myfaces.trinidad.event.AttributeChangeEvent;
 
 
public class Fin_year {
 
    private String v_message;
    private Date s_date;
    private Date v_date;
    private Date e_date;
    private Date f_date;
    private Number v_close;
    private Number v_id;
    private RichPanelGroupLayout pgl1;
    private RichPanelStretchLayout psl1;
    private RichForm f1;
    private RichDocument d1;
    private RichPanelFormLayout pfl1;
    private RichPanelFormLayout pfl2;
    private RichMessages m1;
    private RichTable t1;
    private RichInputDate id1;
    private RichInputDate id2;
    private RichInputDate id3;
    private RichInputText it1;
    private RichPanelGroupLayout pgl2;
    private RichOutputText ot6;
    private RichCommandButton cb1;
    private RichInputDate id4;
    private RichPanelFormLayout pfl3;
    private RichCommandLink cl1;
    private RichPanelFormLayout pfl4;
    private RichPanelLabelAndMessage plam1;
    private RichOutputText ot7;
    private RichOutputText ot8;
 
    public void setPgl1(RichPanelGroupLayout pgl1) {
        this.pgl1 = pgl1;
    }
 
    public RichPanelGroupLayout getPgl1() {
        return pgl1;
    }
 
    public void setPsl1(RichPanelStretchLayout psl1) {
        this.psl1 = psl1;
    }
 
    public RichPanelStretchLayout getPsl1() {
        return psl1;
    }
 
    public void setF1(RichForm f1) {
        this.f1 = f1;
    }
 
    public RichForm getF1() {
        return f1;
    }
 
    public void setD1(RichDocument d1) {
        this.d1 = d1;
    }
 
    public RichDocument getD1() {
        return d1;
    }
 
    public void setPfl1(RichPanelFormLayout pfl1) {
        this.pfl1 = pfl1;
    }
 
    public RichPanelFormLayout getPfl1() {
        return pfl1;
    }
 
    public void setPfl2(RichPanelFormLayout pfl2) {
        this.pfl2 = pfl2;
    }
 
    public RichPanelFormLayout getPfl2() {
        return pfl2;
    }
 
    public void setM1(RichMessages m1) {
        this.m1 = m1;
    }
 
    public RichMessages getM1() {
        return m1;
    }
 
    public void setT1(RichTable t1) {
        this.t1 = t1;
    }
 
    public RichTable getT1() {
        return t1;
    }
 
    public void setId1(RichInputDate id1) {
        this.id1 = id1;
    }
 
    public RichInputDate getId1() {
        return id1;
    }
 
    public void setId2(RichInputDate id2) {
        this.id2 = id2;
    }
 
    public RichInputDate getId2() {
        return id2;
    }
 
    public void setId3(RichInputDate id3) {
        this.id3 = id3;
    }
 
    public RichInputDate getId3() {
        return id3;
    }
 
    public void setDate(Date s_date) {
        this.s_date = s_date;
    }
 
    public Date getDate() {
        return s_date;
    }
 
    public void setE_date(Date e_date) {
        this.e_date = e_date;
    }
 
    public Date getE_date() {
        return e_date;
    }
 
    public void setF_date(Date f_date) {
        this.f_date = f_date;
    }
 
    public Date getF_date() {
        return f_date;
    }
 
    public void setV_close(Number v_close) {
        this.v_close = v_close;
    }
 
    public Number getV_close() {
        return v_close;
    }
 
    public void setV_id(Number v_id) {
        this.v_id = v_id;
    }
 
    public Number getV_id() {
        return v_id;
    }
 
 
    public void aaa(AttributeChangeEvent attributeChangeEvent) {
        // Add event code here...
    }
 
    public void setIt1(RichInputText it1) {
        this.it1 = it1;
    }
 
    public RichInputText getIt1() {
        return it1;
    }
 
    public void setPgl2(RichPanelGroupLayout pgl2) {
        this.pgl2 = pgl2;
    }
 
    public RichPanelGroupLayout getPgl2() {
        return pgl2;
    }
 
 
    public void setV_date(Date v_date) {
        this.v_date = v_date;
    }
 
    public Date getV_date() {
        return v_date;
    }
 
    public void setV_message(String v_message) {
        this.v_message = v_message;
    }
 
    public String getV_message() {
        return v_message;
    }
 
    public void setOt6(RichOutputText ot6) {
        this.ot6 = ot6;
    }
 
    public RichOutputText getOt6() {
        return ot6;
    }
 
    public void setCb1(RichCommandButton cb1) {
        this.cb1 = cb1;
    }
 
    public RichCommandButton getCb1() {
        return cb1;
    }
    public void setId4(RichInputDate id4) {
        this.id4 = id4;
    }
 
    public RichInputDate getId4() {
        return id4;
    }
 
 
 
    public String fin_year_action() {
        // Add event code here...                                
               
   /*************************************/
   try {                    
   DateInfo date = null; 
    int result=1;       
    Number dateid=v_id;       
    v_message=null ;
    
 
    
   DCBindingContainer dcbc =  (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
           Row row =dcbc.findIteratorBinding("FinYearView1Iterator").getCurrentRow();
           if (row!=null){    
               date = new DateInfo();
              s_date =(Date)row.getAttribute("SysDate");
              date.setV_close_month(((Number)row.getAttribute("CloseMonth")).intValue());
              date.setF_date((Date)row.getAttribute("StDate"));               
              date.setE_date((Date)row.getAttribute("EndDate"));             
              date.setV_date_idl(((Number)row.getAttribute("DateId")).intValue());
              date.setDate((Date)v_date);
              Date dd=new Date();                          
              System.out.println("sys_date  "+v_date+"curr_date "+dd.getCurrentDate());
              if(v_date.compareTo(dd.getCurrentDate())>0)
             {    
                  result=0;
                    FacesMessage message = new FacesMessage("خطأ تاريخ اكبر من تاريخ الجهاز");
                    FacesContext.getCurrentInstance().addMessage(null, message);               
              }
                    System.out.println("sys_date  "+v_date+"curr_date "+dd.getCurrentDate());
                     if(v_date.compareTo(s_date)<0)
                             {
                     result=0;
                    FacesMessage message = new FacesMessage("خطأ تاريخ اصغر من التاريخ الحالى");
                    FacesContext.getCurrentInstance().addMessage(null, message);                              
                             }                    
                  
            System.out.println("sys_date  "+v_date+"st_date "+date.getF_date()+"end_date "+date.getE_date());
              if (v_date.compareTo(date.getF_date())<0 || v_date.compareTo(date.getE_date())>0)
                  
              {
                  result=0;
                  FacesMessage message = new FacesMessage("خطأ تاريخ خارح السنة المالية");
                  FacesContext.getCurrentInstance().addMessage(null, message);              
              }                           
                if (result!=1) {      
                        v_message=null ;
                 
                    }               
              else
                  v_message="ok" ;
                {     
             
             /*****************************************************************/         
                    
                System.out.println("rrrrrrr  "+v_date);
                System.out.println("qqqqqq  "+v_id);        
               String username = "mon";
               String password = "mon";
               String thinConn = "jdbc:oracle:thin:@localhost:1521:ORCL";  
        
               String sql=
               "Begin\n" + 
               "Update Fin_Year F\n" + 
               "Set F.Sys_Date="+v_date+"\n" + 
               "Where \n" + 
               "F.Date_Id="+v_id+" ;\n" + 
               "Commit;\n" + 
               "End;" ;                   
                 try {          
        
                   DriverManager.registerDriver(new OracleDriver());
                   Connection conn = DriverManager.getConnection(thinConn,username,password);                  
                   Statement   stat=conn.createStatement();
                    stat.execute(sql)  ;                 
        
                   FacesMessage msg = new FacesMessage("تم تعديل التاريخ");
                   FacesContext.getCurrentInstance().addMessage(null, msg); 
                          conn.close();
                          stat.close();
                        
                      } catch (SQLException e) {
                          // TODO: Add catch code
                          e.printStackTrace();
                          System.out.println("xxxxx "+sql+"yyyyy "+e);
                          FacesMessage msg = new FacesMessage(" لم يتم تعديل التاريخ");
                          FacesContext.getCurrentInstance().addMessage(null, msg); 
                      }
                             
                             return "main";                                                                    
          }          
    /*****************************************************************/                
           }      
     
       else
           {        
       FacesMessage msg = new FacesMessage("لا توجد بيانات");
       FacesContext.getCurrentInstance().addMessage(null, msg); 
       return null;
           }        
   }catch (Exception e) {
        // TODO: Add catch code
        e.printStackTrace();
    }         
        return null;
    }
 
 
    public void setPfl3(RichPanelFormLayout pfl3) {
        this.pfl3 = pfl3;
    }
 
    public RichPanelFormLayout getPfl3() {
        return pfl3;
    }
 
 
    public void setCl1(RichCommandLink cl1) {
        this.cl1 = cl1;
    }
 
    public RichCommandLink getCl1() {
        return cl1;
    }
 
    public void setPfl4(RichPanelFormLayout pfl4) {
        this.pfl4 = pfl4;
    }
 
    public RichPanelFormLayout getPfl4() {
        return pfl4;
    }
 
    public void setPlam1(RichPanelLabelAndMessage plam1) {
        this.plam1 = plam1;
    }
 
    public RichPanelLabelAndMessage getPlam1() {
        return plam1;
    }
 
    public void setOt7(RichOutputText ot7) {
        this.ot7 = ot7;
    }
 
    public RichOutputText getOt7() {
        return ot7;
    }
 
    public void setOt8(RichOutputText ot8) {
        this.ot8 = ot8;
    }
 
    public RichOutputText getOt8() {
        return ot8;
    }
 
    
}
بتاريخ:

استخدم PreparedStatement أفضل ولا توجد مشاكل في التاريخ أبداً

بتاريخ:
  • كاتب الموضوع

ازاى  اعمل chick على التاريخ  واقارنة  بتاريخين اخران قبل ما اعمل عملية الحفظ هو ده سبب لجوئى للطريقة الاخرى

 

 

     public int update_System_Date(Timestamp  UP_DATE,int DATEID){

                             int result=0;
                            String PlSQLCode=                                
                "Begin \n" + 
                "Update Test1 T   \n" + 
                "Set T.T_Date= ?\n" + 
                "Where\n" + 
                "T.Id=?;\n" + 
                "end;" ;
         CallableStatement stat=null;     
        try {
            stat=getDBTransaction().createCallableStatement(PlSQLCode,getDBTransaction().DEFAULT);
            stat.setTimestamp(1, UP_DATE);
            stat.setInt(2, DATEID);
            result=stat.executeUpdate();
        } catch (Exception e) {
            // TODO: Add catch code
            e.printStackTrace();
        } finally {
          try {
                stat.close();     
            } catch (Exception e) {
                // TODO: Add catch code
                e.printStackTrace();
            }  
           
        }                 
        return result;
        }
بتاريخ:
  • كاتب الموضوع

عايز انفذ chck ده قبل ما اعمل update  

عايز اجيب ال row  للجدول واعمل chck قبل تنفيذ جملة ال update  والعقبة ان فى طريقة pl/sql  الل متغيرين عبارة عن باراميتر ما بيظهروش الى فى الكود appmodule  ومش عارف اخدهم كمتغيرين

 

   DateInfo date = null; 

    int result=1;       
    Number dateid=v_id;       
    v_message=null ;
    
 
    
   DCBindingContainer dcbc =  (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
           Row row =dcbc.findIteratorBinding("FinYearView1Iterator").getCurrentRow();
           if (row!=null){    
               date = new DateInfo();
              s_date =(Date)row.getAttribute("SysDate");
              date.setV_close_month(((Number)row.getAttribute("CloseMonth")).intValue());
              date.setF_date((Date)row.getAttribute("StDate"));               
              date.setE_date((Date)row.getAttribute("EndDate"));             
              date.setV_date_idl(((Number)row.getAttribute("DateId")).intValue());
              date.setDate((Date)v_date);
              Date dd=new Date();                          
              System.out.println("sys_date  "+v_date+"curr_date "+dd.getCurrentDate());
              if(v_date.compareTo(dd.getCurrentDate())>0)
             {    
                  result=0;
                    FacesMessage message = new FacesMessage("خطأ تاريخ اكبر من تاريخ الجهاز");
                    FacesContext.getCurrentInstance().addMessage(null, message);               
              }
                    System.out.println("sys_date  "+v_date+"curr_date "+dd.getCurrentDate());
                     if(v_date.compareTo(s_date)<0)
                             {
                     result=0;
                    FacesMessage message = new FacesMessage("خطأ تاريخ اصغر من التاريخ الحالى");
                    FacesContext.getCurrentInstance().addMessage(null, message);                              
                             }                    
                  
            System.out.println("sys_date  "+v_date+"st_date "+date.getF_date()+"end_date "+date.getE_date());
              if (v_date.compareTo(date.getF_date())<0 || v_date.compareTo(date.getE_date())>0)
                  
              {
                  result=0;
                  FacesMessage message = new FacesMessage("خطأ تاريخ خارح السنة المالية");
                  FacesContext.getCurrentInstance().addMessage(null, message);              
              }                           
                if (result!=1) {      
                        v_message=null ;
                 
                    }               
              else
                  v_message="ok" ;
                {     
بتاريخ:
  • كاتب الموضوع

 

عايز انفذ chck ده قبل ما اعمل update  

عايز اجيب ال row  للجدول واعمل chck قبل تنفيذ جملة ال update  والعقبة ان فى طريقة pl/sql  الل متغيرين عبارة عن باراميتر ما بيظهروش الى فى الكود appmodule  ومش عارف اخدهم كمتغيرين 

 

   DateInfo date = null; 

    int result=1;       

    Number dateid=v_id;       

    v_message=null ;

    

 

    

   DCBindingContainer dcbc =  (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();

           Row row =dcbc.findIteratorBinding("FinYearView1Iterator").getCurrentRow();

           if (row!=null){    

               date = new DateInfo();

              s_date =(Date)row.getAttribute("SysDate");

              date.setV_close_month(((Number)row.getAttribute("CloseMonth")).intValue());

              date.setF_date((Date)row.getAttribute("StDate"));               

              date.setE_date((Date)row.getAttribute("EndDate"));             

              date.setV_date_idl(((Number)row.getAttribute("DateId")).intValue());

              date.setDate((Date)v_date);

              Date dd=new Date();                          

              System.out.println("sys_date  "+v_date+"curr_date "+dd.getCurrentDate());

              if(v_date.compareTo(dd.getCurrentDate())>0)

             {    

                  result=0;

                    FacesMessage message = new FacesMessage("خطأ تاريخ اكبر من تاريخ الجهاز");

                    FacesContext.getCurrentInstance().addMessage(null, message);               

              }

                    System.out.println("sys_date  "+v_date+"curr_date "+dd.getCurrentDate());

                     if(v_date.compareTo(s_date)<0)

                             {

                     result=0;

                    FacesMessage message = new FacesMessage("خطأ تاريخ اصغر من التاريخ الحالى");

                    FacesContext.getCurrentInstance().addMessage(null, message);                              

                             }                    

                  

            System.out.println("sys_date  "+v_date+"st_date "+date.getF_date()+"end_date "+date.getE_date());

              if (v_date.compareTo(date.getF_date())<0 || v_date.compareTo(date.getE_date())>0)

                  

              {

                  result=0;

                  FacesMessage message = new FacesMessage("خطأ تاريخ خارح السنة المالية");

                  FacesContext.getCurrentInstance().addMessage(null, message);              

              }                           

                if (result!=1) {      

                        v_message=null ;

                 

                    }               

              else

                  v_message="ok" ;

                {     

 

بتاريخ:

أي متغيرين تقصد؟

بتاريخ:
  • كاتب الموضوع

المتغيرين ال id و ال date اللى حاقوم بتعديله فى الجدول

بتاريخ:

وأين المشكلة بالضبط؟

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.