5

Oracleデータベースでsqldatasourceバインドを使用してフォームビュー値を更新する際に問題が発生しています。

選択イベントと挿入イベントは正しく機能しており、すべての列とパラメーターが正しいです。

しかし、下の更新ボタンを押すと、エラーが発生します:

「ORA-01036:不正な変数名/番号」

これがsqldatasource(oracleとバインドされている)で使用している私の更新コマンドです:

UPDATE REPORT_PINK
SET DEMOG_HEIGHT = :DEMOG_HEIGHT
        , DEMOG_WEIGHT = :DEMOG_WEIGHT
        , DEMOG_TX_NO = :DEMOG_TX_NO
        , DEMOG_TX_PLACE = :DEMOG_TX_PLACE
        , DEMOG_TX_DATE = :DEMOG_TX_DATE
        , DEMOG_TX_TYPE = :DEMOG_TX_TYPE
        , DEMOG_RELATIONSHIP = :DEMOG_RELATIONSHIP
        , MED_HIS_CAUSE = :MED_HIS_CAUSE
        , MED_HIS_ALLERGY = :MED_HIS_ALLERGY
        , MED_HIS_BIOPSY_DATE = :MED_HIS_BIOPSY_DATE
        , MED_HIS_DIALYSIS = :MED_HIS_DIALYSIS
        , MED_HIS_DIALYSIS_DATE = :MED_HIS_DIALYSIS_DATE
        , MED_HIS_PREV_TX_FIRST = :MED_HIS_PREV_TX_FIRST
        , MED_HIS_PREV_TX_DATE_FIRST = :MED_HIS_PREV_TX_DATE_FIRST
        , MED_HIS_PREV_TX_SECOND = :MED_HIS_PREV_TX_SECOND
        , MED_HIS_PREV_TX_DATE_SECOND = :MED_HIS_PREV_TX_DATE_SECOND
        , COMOR_HEART = :COMOR_HEART
        , COMOR_LIVER = :COMOR_LIVER
        , COMOR_HEPATITIS_B = :COMOR_HEPATITIS_B
        , COMOR_HEPATITIS_C = :COMOR_HEPATITIS_C
        , COMOR_DIABETES = :COMOR_DIABETES
        , COMOR_TB = :COMOR_TB
        , COMOR_PEPTIC = :COMOR_PEPTIC
        , COMOR_CANCER = :COMOR_CANCER
        , IMM_CDC_DATE = :IMM_CDC_DATE
        , IMM_CDC_NORMAL_T = :IMM_CDC_NORMAL_T
        , IMM_CDC_NORMAL_B = :IMM_CDC_NORMAL_B
        , IMM_CDC_DTT_B = :IMM_CDC_DTT_B
        , IMM_CDC_DTT_T = :IMM_CDC_DTT_T
        , IMM_CDC_AHG_B = :IMM_CDC_AHG_B
        , IMM_CDC_AHG_T = :IMM_CDC_AHG_T
        , IMM_FLOW_DATE = :IMM_FLOW_DATE
        , IMM_FLOW_IGGT_PAT = :IMM_FLOW_IGGT_PAT
        , IMM_FLOW_IGGT_PRO = :IMM_FLOW_IGGT_PRO
        , IMM_FLOW_IGGB_PAT = :IMM_FLOW_IGGB_PAT
        , IMM_FLOW_IGGB_PRO = :IMM_FLOW_IGGB_PRO
        , IMM_FLOW_IGMT_PAT = :IMM_FLOW_IGMT_PAT
        , IMM_FLOW_IGMB_PAT = :IMM_FLOW_IGMB_PAT
        , IMM_ANTI_HLA_PRA = :IMM_ANTI_HLA_PRA
        , IMM_ANTI_HLA_PRA_DATE = :IMM_ANTI_HLA_PRA_DATE
        , TC_REMUZZI_GLOMERULI_L = :TC_REMUZZI_GLOMERULI_L
        , TC_REMUZZI_TUBULE_L = :TC_REMUZZI_TUBULE_L
        , TC_REMUZZI_INTERSTITM_L = :TC_REMUZZI_INTERSTITM_L
        , TC_REMUZZI_ARTERIS_L = :TC_REMUZZI_ARTERIS_L
        , TC_REMUZZI_GLOMERULI_R = :TC_REMUZZI_GLOMERULI_R
        , TC_REMUZZI_TUBULE_R = :TC_REMUZZI_TUBULE_R
        , TC_REMUZZI_INTERSTITM_R = :TC_REMUZZI_INTERSTITM_R
        , TC_REMUZZI_ARTERIS_R = :TC_REMUZZI_ARTERIS_R
        , TC_ANAST_ARTERY = :TC_ANAST_ARTERY
        , TC_ANAST_VEIN = :TC_ANAST_VEIN
        , TC_ANAST_URETER = :TC_ANAST_URETER
        , TC_DONATE_FIRST_ISCHEMIC = :TC_DONATE_FIRST_ISCHEMIC
        , TC_DONATE_SECOND_ISCHEMIC = :TC_DONATE_SECOND_ISCHEMIC
        , TC_DONATE_COLD_ISCHEMIC = :TC_DONATE_COLD_ISCHEMIC
        , TC_DONATE_PERFUSION = :TC_DONATE_PERFUSION
        , DONOR_NAME = :DONOR_NAME
        , DONOR_NRIC = :DONOR_NRIC
        , DONOR_GENDER = :DONOR_GENDER
        , DONOR_AGE = :DONOR_AGE
        , DONOR_DEATH = :DONOR_DEATH
        , DONOR_INOTROPES = :DONOR_INOTROPES
        , DONOR_ISHYPER = :DONOR_ISHYPER
        , DONOR_HYPER = :DONOR_HYPER
        , DONOR_ISDIABETES = :DONOR_ISDIABETES
        , DONOR_DIABETES = :DONOR_DIABETES
        , DONOR_ISOTHERS = :DONOR_ISOTHERS
        , DONOR_OTHERS = :DONOR_OTHERS
        , DONOR_UREA = :DONOR_UREA
        , DONOR_CREAT = :DONOR_CREAT
        , DONOR_HB = :DONOR_HB
        , DONOR_PT = :DONOR_PT
        , DONOR_PTT = :DONOR_PTT
        , VIRO_HBSAG_RECP = :VIRO_HBSAG_RECP
        , VIRO_HBSAG_RECP_DATE = :VIRO_HBSAG_RECP_DATE
        , VIRO_ANTI_HB_RECP = :VIRO_ANTI_HB_RECP
        , VIRO_ANTI_HB_RECP_DATE = :VIRO_ANTI_HB_RECP_DATE
        , VIRO_ANTI_HBC_RECP = :VIRO_ANTI_HBC_RECP
        , VIRO_ANTI_HBC_RECP_DATE = :VIRO_ANTI_HBC_RECP_DATE
        , VIRO_HBV_RECP = :VIRO_HBV_RECP
        , VIRO_HBV_RECP_DATE = :VIRO_HBV_RECP_DATE
        , VIRO_ANTI_HCV_RECP = :VIRO_ANTI_HCV_RECP
        , VIRO_ANTI_HCV_RECP_DATE = :VIRO_ANTI_HCV_RECP_DATE
        , VIRO_HIV_AG_RECP = :VIRO_HIV_AG_RECP
        , VIRO_HIV_AG_RECP_DATE = :VIRO_HIV_AG_RECP_DATE
        , VIRO_HIV_PCR_RECP = :VIRO_HIV_PCR_RECP
        , VIRO_HIV_PCR_RECP_DATE = :VIRO_HIV_PCR_RECP_DATE
        , VIRO_CMV_RECP = :VIRO_CMV_RECP
        , VIRO_CMV_RECP_DATE = :VIRO_CMV_RECP_DATE
        , VIRO_VDRL_RECP = :VIRO_VDRL_RECP
        , VIRO_VDRL_RECP_DATE = :VIRO_VDRL_RECP_DATE
        , VIRO_ABO_RECP = :VIRO_ABO_RECP
        , VIRO_ABO_RECP_DATE = :VIRO_ABO_RECP_DATE
        , VIRO_HCV_PCR_RECP = :VIRO_HCV_PCR_RECP
        , VIRO_HCV_PCR_RECP_DATE = :VIRO_HCV_PCR_RECP_DATE
        , VIRO_HBSAG_DONOR = :VIRO_HBSAG_DONOR
        , VIRO_HBSAG_DONOR_DATE = :VIRO_HBSAG_DONOR_DATE
        , VIRO_ANTI_HB_DONOR = :VIRO_ANTI_HB_DONOR
        , VIRO_ANTI_HB_DONOR_DATE = :VIRO_ANTI_HB_DONOR_DATE
        , VIRO_ANTI_HBC_DONOR = :VIRO_ANTI_HBC_DONOR
        , VIRO_ANTI_HBC_DONOR_DATE = :VIRO_ANTI_HBC_DONOR_DATE
        , VIRO_HBV_DONOR = :VIRO_HBV_DONOR
        , VIRO_HBV_DONOR_DATE = :VIRO_HBV_DONOR_DATE
        , VIRO_ANTI_HCV_DONOR = :VIRO_ANTI_HCV_DONOR
        , VIRO_ANTI_HCV_DONOR_DATE = :VIRO_ANTI_HCV_DONOR_DATE
        , VIRO_HCV_PCR_DONOR = :VIRO_HCV_PCR_DONOR
        , VIRO_HCV_PCR_DONOR_DATE = :VIRO_HCV_PCR_DONOR_DATE
        , VIRO_HIV_AG_DONOR = :VIRO_HIV_AG_DONOR
        , VIRO_HIV_AG_DONOR_DATE = :VIRO_HIV_AG_DONOR_DATE
        , VIRO_HIV_PCR_DONOR = :VIRO_HIV_PCR_DONOR
        , VIRO_HIV_PCR_DONOR_DATE = :VIRO_HIV_PCR_DONOR_DATE
        , VIRO_CMV_DONOR = :VIRO_CMV_DONOR
        , VIRO_CMV_DONOR_DATE = :VIRO_CMV_DONOR_DATE
        , VIRO_VDRL_DONOR = :VIRO_VDRL_DONOR
        , VIRO_VDRL_DONOR_DATE = :VIRO_VDRL_DONOR_DATE
        , VIRO_ABO_DONOR = :VIRO_ABO_DONOR
        , VIRO_ABO_DONOR_DATE = :VIRO_ABO_DONOR_DATE
        , HLA_A1_RECP = :HLA_A1_RECP
        , HLA_A2_RECP = :HLA_A2_RECP
        , HLA_B1_RECP = :HLA_B1_RECP
        , HLA_B2_RECP = :HLA_B2_RECP
        , HLA_DR1_RECP = :HLA_DR1_RECP
        , HLA_DR2_RECP = :HLA_DR2_RECP
        , HLA_ANTITITRE_RECP = :HLA_ANTITITRE_RECP
        , HLA_A1_DONOR = :HLA_A1_DONOR
        , HLA_A2_DONOR = :HLA_A2_DONOR
        , HLA_B1_DONOR = :HLA_B1_DONOR
        , HLA_B2_DONOR = :HLA_B2_DONOR
        , HLA_DR1_DONOR = :HLA_DR1_DONOR
        , HLA_DR2_DONOR = :HLA_DR2_DONOR
        , HLA_ANTITITRE_DONOR = :HLA_ANTITITRE_DONOR
WHERE PAT_ID = :PAT_ID

アップデート

where条件を一致させるために主キーを使用していなかったため、問題は解決しました。主キーを使用してwhere条件を変更すると、動作が開始されます。

一般に、手動で実行しているときにレコードを更新するために任意のwhere条件を設定できるため、sqldatasource(またはoracle)を使用しているときに主キーを使用してwhere条件を指定する必要がありますか?

4

1 に答える 1

5

はい。Oracle、SQL Server、またはその他のデータソースでSqlDataSourceを使用している場合は、SqlDataSourceを使用して更新クエリを実行するために主キーを使用する必要があると思います。

その理由は、SqlDataSourceでは一度に1つのレコードしか編集できないため、変更には1つのレコードのみが反映され、1つを超えるレコードは反映されないためである可能性があります。

于 2012-09-08T07:03:13.570 に答える