Updating a varchar2(1) column

hi,
i need to update load_status_cd, a varchar2(1) column with ' 0 ' based on a condition as below..
Which of the following way is the right choice to use?
UPDATE master_adrs_rate_center_xref a
SET a.load_status_cd =
SELECT 0 FROM master_address b
WHERE
a.mast_pri_address_id = b.mast_pri_address_id
AND a.row_modify_dt < b.last_update_date
UPDATE master_adrs_rate_center_xref a
SET a.load_status_cd = '0'
where exists(
SELECT 1 FROM
master_address b
WHERE
a.mast_pri_address_id = b.mast_pri_address_id
AND a.row_modify_dt < b.last_update_date);

Second is the correct query.
First query will update wrong. It will update 0 for the records where your join condition is met and for the remaining records it will update NULL which will be totally wrong. With the introduction of where clause, your first query would be perfect
UPDATE master_adrs_rate_center_xref a
SET a.load_status_cd =
SELECT 0 FROM master_address b
WHERE
a.mast_pri_address_id = b.mast_pri_address_id
AND a.row_modify_dt < b.last_update_date
where exists
SELECT 0 FROM master_address b
WHERE
a.mast_pri_address_id = b.mast_pri_address_id
AND a.row_modify_dt < b.last_update_date
)

Similar Messages

  • Updates on a specific COLUMN is not generating a BEFORE or AFTER value ...

    I have a table SCHEMA_OWNER.RX_TX table that has 182 columns. Here is the extract param file. Also on this table i have enabled ALL COLUMNS to be supplimental logged via "alter table SCHEMA_OWNER.RX_TX add supplemental log data (all) columns". The table has a PK on the "ID" column. Please note that the POS_REFUND_DATE column in the table SCHEMA_OWNER.RX_TX is 178th column.
    When i execute the following UPDATE followed by a COMMIT, when the current value of POS_REFUND_DATE=NULL, i do not see TRAIL records getting created in the trail file.
    SQL>Update Eps2_Kp_900001058.Rx_Tx Set Pos_Refund_Date=Pos_Refund_Date Where Tx_Number=1014524 And Nhin_Store_Id=900001058 And Id=4575035;
    SQL>COMMIT;
    NOTE: If POS_REFUND_DATE is NOT NULL, before the above UPDATE is executed, then TRAIL RECORDS (i.e. before and after trail records) are successfully created.
    Here is param file for the EXTRACT=EXTPROD
    EXTRACT EXTPROD
    SETENV (ORACLE_SID = "opepsd2")
    SETENV (ORACLE_HOME = "/u01/app/oradev/product/11.2.0.3/db_1")
    SETENV (NLS_LANG="AMERICAN_AMERICA.WE8MSWIN1252")
    USERID ogguser, PASSWORD AACAAAAAAAAAAAKAJISJVHPCJAEJKJIHWHVCXHQIWIZEUCJF, ENCRYPTKEY DEFAULT
    EXTTRAIL /u02/ggoppr/trail/SP
    TRANLOGOPTIONS DBLOGREADER
    CACHEMGR CACHEBUFFERSIZE 64KB, CACHESIZE 2GB, CACHEDIRECTORY ./dirtmp
    GETUPDATEBEFORES
    NOCOMPRESSDELETES
    NOCOMPRESSUPDATES
    STATOPTIONS RESETREPORTSTATS
    REPORT AT 00:01
    REPORTROLLOVER AT 00:01
    REPORTCOUNT EVERY 60 SECONDS, RATE
    WARNLONGTRANS 2 HOURS
    TABLE EPS2_KP_900001058.RX_TX , COLS (ID,NHIN_STORE_ID,POS_SOLD_DATE,LAST_DML_BY_CONVERSION_DATE,RETURNED_DATE,POS_REFUND_DATE,UNSELL_DATE,ADMIN_REBILLED_DATE,PARTIAL_FILL_STATUS) , TOKENS ( NHIN_STORE_ID = "900001058" );
    Here are some usefull output from GGSCI:
    GGSCI (szabdb32) 4> dblogin userid ogguser , password ogguser123
    Successfully logged into database.
    GGSCI (szabdb32) 5> info all
    Program Status Group Lag Time Since Chkpt
    MANAGER RUNNING
    EXTRACT RUNNING EXTDEV2 00:00:00 00:00:07
    Description EPS Extract
    EXTRACT RUNNING EXTPROD 00:00:00 00:00:04
    EXTRACT RUNNING EXTSALE 00:00:00 00:00:04
    EXTRACT RUNNING EXTTEST 00:00:00 00:00:04
    EXTRACT RUNNING PMPDEV2 00:00:00 00:00:02
    EXTRACT RUNNING PMPPROD 00:00:00 00:00:01
    EXTRACT RUNNING PMPSALE 00:00:00 00:00:05
    EXTRACT RUNNING PMPTEST 00:00:00 00:00:05
    EXTRACT RUNNING RPMPDEV2 00:00:00 00:00:06
    Here is the DDL structure of the table object "EPS2_KP_900001058.RX_TX" (vERY LONg)
    CREATE TABLE "EPS2_KP_900001058"."RX_TX"
    ( "ID" NUMBER(38,0) NOT NULL ENABLE,
    "NHIN_STORE_ID" NUMBER(10,0) NOT NULL ENABLE,
    "DELETED" VARCHAR2(1 BYTE),
    "BRAND_ACQUISITION_COST" NUMBER(13,2),
    "AUTO_COUNTING_SYSTEM_PRIORITY" VARCHAR2(1 BYTE),
    "CHARGE" VARCHAR2(1 BYTE),
    "COMPOUND_FEE" NUMBER(13,2),
    "BASE_COST" NUMBER(13,2),
    "COUNSELING_CHOICE" VARCHAR2(1 BYTE),
    "NCPDP_DAW" VARCHAR2(1 BYTE),
    "FILL_QUANTITY" NUMBER(13,4),
    "BRAND_DISCOUNT" NUMBER(13,2),
    "DRUG_EXPIRATION_DATE" DATE,
    "FILL_DATE" DATE,
    "PICKED_UP" VARCHAR2(1 BYTE),
    "HOST_RETRIEVAL_DATE" DATE,
    "MANUFACTURER" VARCHAR2(10 BYTE),
    "SAFETY_CAP_FLAG" VARCHAR2(1 BYTE),
    "PAC_MED" VARCHAR2(1 BYTE),
    "REFILL_NUMBER" NUMBER(5,0),
    "REPORTABLE_SALES_DATE" DATE,
    "FILL_STATUS" VARCHAR2(1 BYTE),
    "TAX_AMOUNT" NUMBER(13,2),
    "TP_BILL" VARCHAR2(1 BYTE),
    "UC_PRICE" NUMBER(13,2),
    "UP_CHARGE" NUMBER(13,2),
    "USUAL" VARCHAR2(1 BYTE),
    "DAYS_SUPPLY" NUMBER(10,0),
    "DRUG_SCHEDULE" VARCHAR2(1 BYTE),
    "DAYS_SUPPLY_BASIS" VARCHAR2(1 BYTE),
    "FOLLOW_UP_DATE" DATE,
    "GROUP_ON_RX" VARCHAR2(3 BYTE),
    "ICD9" VARCHAR2(7 BYTE),
    "ICD9_TYPE" VARCHAR2(1 BYTE),
    "NUM_LABELS" NUMBER(3,0),
    "OWED" NUMBER(13,4),
    "PRESCRIBED_QUANTITY" NUMBER(13,4),
    "STOP_DATE" DATE,
    "WRITTEN_DATE" DATE,
    "DISPENSED_DRUG_NDC" VARCHAR2(11 BYTE),
    "LANG" VARCHAR2(2 BYTE) NOT NULL ENABLE,
    "SIG_PER_DAY" NUMBER(13,4),
    "SIG_PER_DOSE" NUMBER(13,4),
    "SIG_TEXT" VARCHAR2(515 BYTE),
    "REFILL_SOURCE" NUMBER(5,0),
    "TX_DELETED" VARCHAR2(1 BYTE),
    "TX_NUMBER" NUMBER(12,0),
    "CENTRAL_FILL_CUTOFF_DATE" DATE,
    "BRAND_PRICE" NUMBER(13,2),
    "GENERIC_PRICE" NUMBER(13,2),
    "DRUG_DISPENSED" VARCHAR2(1 BYTE),
    "POS_STATUS" VARCHAR2(1 BYTE),
    "POS_INVOICE_NUMBER" NUMBER(35,0),
    "CASHIER_NAME" VARCHAR2(28 BYTE),
    "REGISTER_NUM" VARCHAR2(20 BYTE),
    "POS_OVERRIDDEN_NET_PAID" NUMBER(13,2),
    "POS_REASON_FOR_VOID" VARCHAR2(120 BYTE),
    "RX_STOLEN" VARCHAR2(1 BYTE),
    "POS_BARCODE_NUM" NUMBER(20,0),
    "RETURNED_DATE" DATE,
    "RX_CREDIT_INITIATOR" VARCHAR2(1 BYTE),
    "ORIGINAL_QTY" NUMBER(13,4),
    "ORIGINAL_PRICE" NUMBER(13,2),
    "OLD_RX_TX_ID" NUMBER(38,0),
    "NEW_RX_TX_ID" NUMBER(38,0),
    "PATIENT_DISEASE_ID" NUMBER(38,0),
    "PRICE_CODE_ID" NUMBER(38,0),
    "TAX_ID" NUMBER(38,0),
    "COMPOUND_ID" NUMBER(38,0),
    "DRUG_BRAND_ID" NUMBER(38,0),
    "DRUG_GENERIC_ID" NUMBER(38,0),
    "REFERENCE_BRAND_ID" NUMBER(38,0),
    "KEEP_SAME_DRUG" VARCHAR2(1 BYTE),
    "DIFFERENT_GENERIC" VARCHAR2(1 BYTE),
    "RX_SUMMARY_ID" NUMBER(38,0),
    "PRESCRIBER_CLINIC_LINK_ID" NUMBER(38,0),
    "SUPV_PRESCRIBER_CLINIC_LINK_ID" NUMBER(38,0),
    "DRUG_COST_TYPE_ID" NUMBER(38,0),
    "BASECOST_ID" NUMBER(38,0),
    "REQUESTED_PRICE_TO_QTY" NUMBER(13,2),
    "OVERRIDDEN_PRICE_AMOUNT" NUMBER(13,2),
    "PRICE_OVERRIDE_REASON" VARCHAR2(1 BYTE),
    "PRICE_OVERRIDE_NOTE_ID" NUMBER(38,0),
    "GENERIC_ACQUISITION_COST" NUMBER(13,2),
    "GENERIC_DISCOUNT" NUMBER(13,2),
    "PROFESSIONAL_FEE" NUMBER(13,2),
    "NO_SALES_TAX" VARCHAR2(1 BYTE),
    "COMPETITIVE_PRICED" VARCHAR2(1 BYTE),
    "USING_PERCENT_OF_BRAND" VARCHAR2(1 BYTE),
    "USING_COMPOUND_PLAN_PRICING" VARCHAR2(1 BYTE),
    "ALLOW_PRICE_OVERRIDE" VARCHAR2(1 BYTE),
    "POS_SOLD_DATE" DATE,
    "FILL_LOCATION" VARCHAR2(1 BYTE),
    "NOTES" VARCHAR2(2000 BYTE),
    "DRUG_IMAGE_KEY" VARCHAR2(255 BYTE),
    "BRAND_MANUALLY_SELECTED" VARCHAR2(1 BYTE),
    "GENERIC_MANUALLY_SELECTED" VARCHAR2(1 BYTE),
    "TX_STATUS" VARCHAR2(1 BYTE),
    "RETURNED_USER_ID" NUMBER(38,0),
    "DE_INITIALS" VARCHAR2(3 BYTE),
    "DV_INITIALS" VARCHAR2(3 BYTE),
    "PV_INITIALS" VARCHAR2(3 BYTE),
    "OVERRIDE_USER_ID" NUMBER(38,0),
    "PARTIAL_FILL_STATUS" VARCHAR2(1 BYTE),
    "PARTIAL_FILL_BILLING_TYPE" VARCHAR2(1 BYTE),
    "INTENDED_QUANTITY" NUMBER(13,4),
    "PATIENT_REQUESTED_PRICE" VARCHAR2(1 BYTE),
    "MISSING_DATE" DATE,
    "REPLACE_DATE" DATE,
    "RETURN_TO_STOCK_DATE" DATE,
    "RX_COM_DOWN" VARCHAR2(1 BYTE),
    "RPH_NAME_OF_RECORD" VARCHAR2(60 BYTE),
    "CUSTOM_SIG" VARCHAR2(1 BYTE),
    "DISCOUNT_ID" NUMBER(38,0),
    "PATIENT_REQUEST_BRAND_GENERIC" VARCHAR2(1 BYTE),
    "WILL_CALL_PICKED_UP_DATE" DATE,
    "COMPLETION_RX_TX_ID" NUMBER(38,0),
    "PARTIAL_RX_TX_ID" NUMBER(38,0),
    "SENT_TO_EHR" VARCHAR2(1 BYTE) DEFAULT 'N',
    "DRUG_IMAGE_START_DATE" DATE,
    "ADMIN_REBILLED" VARCHAR2(1 BYTE),
    "SIG_CODE" VARCHAR2(20 BYTE),
    "SIG_TEXT_FOREIGN_LANGUAGE" VARCHAR2(515 BYTE),
    "RTRN_PRESCRIBER_CLINIC_LINK_ID" NUMBER(38,0),
    "OUTSOURCE_COMPOUND" VARCHAR2(1 BYTE),
    "IMPRINT_TEXT" VARCHAR2(512 BYTE),
    "IMPRINT_SOURCE" VARCHAR2(36 BYTE),
    "DIB_PEM_IDENTIFIER" VARCHAR2(20 BYTE),
    "DIB_DATABASE_VERSION" VARCHAR2(5 BYTE),
    "DIB_ISSUE_DATE" DATE,
    "COST_VERIFIED" VARCHAR2(1 BYTE),
    "SEND_TO_PRESCRIBER_WILDCARD" VARCHAR2(1 BYTE),
    "COUNSELING_RPH_INITIALS" VARCHAR2(3 BYTE),
    "STATE_REPORT_STATUS" VARCHAR2(1 BYTE),
    "REQUIRE_RELATION_TO_PATIENT" VARCHAR2(1 BYTE),
    "PHOTO_ID_STATE" VARCHAR2(3 BYTE),
    "PHOTO_ID_TYPE" VARCHAR2(2 BYTE),
    "PHOTO_ID_NUMBER" VARCHAR2(20 BYTE),
    "RELATIONSHIP_TO_PATIENT" VARCHAR2(2 BYTE),
    "PICKUP_FIRST_NAME" VARCHAR2(50 BYTE),
    "PICKUP_LAST_NAME" VARCHAR2(50 BYTE),
    "REQUIRE_PICKUP_ID_TYPE" VARCHAR2(1 BYTE),
    "REQUIRE_PICKUP_ID_STATE" VARCHAR2(1 BYTE),
    "REQUIRE_PICKUP_ID_NAME" VARCHAR2(1 BYTE),
    "REQUIRE_PICKUP_ID_NUMBER" VARCHAR2(1 BYTE),
    "REQUIRE_PICKUP_ID_EXPIRATION" VARCHAR2(1 BYTE),
    "PHOTO_ID_EXPIRE_DATE" DATE,
    "PATIENT_DELIVERY_NOTES_ID" NUMBER(38,0),
    "CANCEL_REASON" VARCHAR2(2 BYTE),
    "COUNSELING_RPH_EMPLOYEE_NUM" VARCHAR2(255 BYTE),
    "RPH_COUNSEL_NOTES_ID" NUMBER(38,0),
    "MEMBERSHIP_INDICATOR" VARCHAR2(1 BYTE),
    "COUNSEL_REASON" VARCHAR2(2 BYTE),
    "POS_VOID_REASON_CODE" VARCHAR2(10 BYTE),
    "AUTHORIZING_MANAGER_NAME" VARCHAR2(255 BYTE),
    "FREQUENCY_RATE" NUMBER(13,4),
    "INCREMENTAL_CONV_SENT_TO_EHR" VARCHAR2(1 BYTE),
    "ENTERPRISE_RX_FILL_COUNT" NUMBER(5,0),
    "INTENDED_DAYS_SUPPLY" NUMBER(10,0),
    "DDID_USED_BY_DRUG_SELECTION" NUMBER(10,0),
    "GPI_USED_BY_DRUG_SELECTION" VARCHAR2(24 BYTE),
    "NEW_DDID_AUTHORIZED_BY_EMP_NUM" VARCHAR2(255 BYTE),
    "TIME_FRAME" NUMBER(2,0),
    "TIME_FRAME_TYPE" NUMBER(2,0),
    "LAST_DML_BY_CONVERSION_DATE" TIMESTAMP (6),
    "END_OF_THERAPY_DATE" TIMESTAMP (6),
    "UNSELL_DATE" TIMESTAMP (6),
    "UNSELL_QUALIFIER" VARCHAR2(2 BYTE),
    "ADMIN_REBILLED_DATE" TIMESTAMP (6),
    "LAST_UPDATE_DATE" TIMESTAMP (6),
    "TP_LAST_UPDATE_DATE" TIMESTAMP (6),
    "ADMIN_REBILL_QUALIFIER" VARCHAR2(3 BYTE),
    "PRIOR_RETURN_REASON_CODE" VARCHAR2(2 BYTE),
    "POS_PRICE_ADJUSTMENT_CODE" VARCHAR2(2 BYTE),
    "TX_SOLD_QUALIFIER" VARCHAR2(3 BYTE),
    "MEDICARE_NOTICE" VARCHAR2(1 BYTE),
    "POS_REFUND_REASON_CODE" VARCHAR2(10 BYTE),
    "POS_REASON_FOR_REFUND" VARCHAR2(120 BYTE),
    "POS_REFUND_DATE" TIMESTAMP (6),
    "MEDGUIDE_TO_PRINT" VARCHAR2(1 BYTE),
    "PATIENT_EDUCATION_TO_PRINT" VARCHAR2(1 BYTE),
    "EXCLUDED_OTC" VARCHAR2(1 BYTE),
    CONSTRAINT "RX_TX_PK" PRIMARY KEY ("ID")
    USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ENABLE,
    SUPPLEMENTAL LOG DATA (ALL) COLUMNS,
    SUPPLEMENTAL LOG GROUP "GGS_RX_TX_78190" ("ID") ALWAYS,
    CONSTRAINT "NOTES_FK1" FOREIGN KEY ("RPH_COUNSEL_NOTES_ID")
    REFERENCES "EPS2_KP_900001058"."NOTES" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK1" FOREIGN KEY ("PRICE_OVERRIDE_NOTE_ID")
    REFERENCES "EPS2_KP_900001058"."NOTES" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK10" FOREIGN KEY ("DISCOUNT_ID")
    REFERENCES "EPS2_KP_900001058"."DISCOUNT" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK11" FOREIGN KEY ("SUPV_PRESCRIBER_CLINIC_LINK_ID")
    REFERENCES "EPS2_KP_900001058"."PRESCRIBER_CLINIC_LINK" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK12" FOREIGN KEY ("PATIENT_DISEASE_ID")
    REFERENCES "EPS2_KP_900001058"."PATIENT_DISEASE" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK13" FOREIGN KEY ("PRESCRIBER_CLINIC_LINK_ID")
    REFERENCES "EPS2_KP_900001058"."PRESCRIBER_CLINIC_LINK" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK14" FOREIGN KEY ("RX_SUMMARY_ID")
    REFERENCES "EPS2_KP_900001058"."RX_SUMMARY" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK15" FOREIGN KEY ("DRUG_GENERIC_ID")
    REFERENCES "EPS2_KP_900001058"."DRUG" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK16" FOREIGN KEY ("DRUG_BRAND_ID")
    REFERENCES "EPS2_KP_900001058"."DRUG" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK17" FOREIGN KEY ("COMPOUND_ID")
    REFERENCES "EPS2_KP_900001058"."COMPOUND" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK18" FOREIGN KEY ("RETURNED_USER_ID")
    REFERENCES "EPS2_KP_900001058"."USERS" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK2" FOREIGN KEY ("TAX_ID")
    REFERENCES "EPS2_KP_900001058"."TAX" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK20" FOREIGN KEY ("DRUG_COST_TYPE_ID")
    REFERENCES "EPS2_KP_900001058"."DRUG_COST_TYPE" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK21" FOREIGN KEY ("BASECOST_ID")
    REFERENCES "EPS2_KP_900001058"."BASECOST" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK22" FOREIGN KEY ("COMPLETION_RX_TX_ID")
    REFERENCES "EPS2_KP_900001058"."RX_TX" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK23" FOREIGN KEY ("PARTIAL_RX_TX_ID")
    REFERENCES "EPS2_KP_900001058"."RX_TX" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK24" FOREIGN KEY ("RTRN_PRESCRIBER_CLINIC_LINK_ID")
    REFERENCES "EPS2_KP_900001058"."PRESCRIBER_CLINIC_LINK" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK25" FOREIGN KEY ("PATIENT_DELIVERY_NOTES_ID")
    REFERENCES "EPS2_KP_900001058"."NOTES" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK4" FOREIGN KEY ("PRICE_CODE_ID")
    REFERENCES "EPS2_KP_900001058"."PRICE_CODE" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK5" FOREIGN KEY ("REFERENCE_BRAND_ID")
    REFERENCES "EPS2_KP_900001058"."DRUG" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK6" FOREIGN KEY ("OLD_RX_TX_ID")
    REFERENCES "EPS2_KP_900001058"."RX_TX" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK7" FOREIGN KEY ("NEW_RX_TX_ID")
    REFERENCES "EPS2_KP_900001058"."RX_TX" ("ID") ENABLE NOVALIDATE,
    CONSTRAINT "RX_TX_FK9" FOREIGN KEY ("OVERRIDE_USER_ID")
    REFERENCES "EPS2_KP_900001058"."USERS" ("ID") ENABLE NOVALIDATE
    ) SEGMENT CREATION IMMEDIATE
    PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
    NOCOMPRESS LOGGING
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_DATA" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX1" ON "EPS2_KP_900001058"."RX_TX" ("DISCOUNT_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX10" ON "EPS2_KP_900001058"."RX_TX" ("PRICE_OVERRIDE_NOTE_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX11" ON "EPS2_KP_900001058"."RX_TX" ("BASECOST_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX12" ON "EPS2_KP_900001058"."RX_TX" ("REFERENCE_BRAND_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX13" ON "EPS2_KP_900001058"."RX_TX" ("RX_SUMMARY_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX15" ON "EPS2_KP_900001058"."RX_TX" ("SUPV_PRESCRIBER_CLINIC_LINK_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX16" ON "EPS2_KP_900001058"."RX_TX" ("TAX_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX17" ON "EPS2_KP_900001058"."RX_TX" ("TX_NUMBER")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX18" ON "EPS2_KP_900001058"."RX_TX" ("DISPENSED_DRUG_NDC")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX19" ON "EPS2_KP_900001058"."RX_TX" ("DRUG_COST_TYPE_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX2" ON "EPS2_KP_900001058"."RX_TX" ("COMPOUND_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX20" ON "EPS2_KP_900001058"."RX_TX" ("OVERRIDE_USER_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX21" ON "EPS2_KP_900001058"."RX_TX" ("RETURNED_USER_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE UNIQUE INDEX "EPS2_KP_900001058"."RX_TX_IX22" ON "EPS2_KP_900001058"."RX_TX" (CASE "NHIN_STORE_ID" WHEN 900001058 THEN "TX_NUMBER" ELSE NULL END )
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX23" ON "EPS2_KP_900001058"."RX_TX" ("COMPLETION_RX_TX_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX24" ON "EPS2_KP_900001058"."RX_TX" ("PARTIAL_RX_TX_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX28" ON "EPS2_KP_900001058"."RX_TX" (TRUNC("REPORTABLE_SALES_DATE"))
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX29" ON "EPS2_KP_900001058"."RX_TX" ("PATIENT_DELIVERY_NOTES_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX3" ON "EPS2_KP_900001058"."RX_TX" ("DRUG_BRAND_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX30" ON "EPS2_KP_900001058"."RX_TX" ("FILL_LOCATION")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX31" ON "EPS2_KP_900001058"."RX_TX" ("FILL_DATE")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX4" ON "EPS2_KP_900001058"."RX_TX" ("DRUG_GENERIC_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX5" ON "EPS2_KP_900001058"."RX_TX" ("NEW_RX_TX_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX6" ON "EPS2_KP_900001058"."RX_TX" ("OLD_RX_TX_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX7" ON "EPS2_KP_900001058"."RX_TX" ("PATIENT_DISEASE_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX8" ON "EPS2_KP_900001058"."RX_TX" ("PRESCRIBER_CLINIC_LINK_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    CREATE INDEX "EPS2_KP_900001058"."RX_TX_IX9" ON "EPS2_KP_900001058"."RX_TX" ("PRICE_CODE_ID")
    PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
    BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
    TABLESPACE "EPS2_KP_900001058_INDEX" ;
    Hope to get a solution to the above issue. Why no TRAIL records are being created for this 178th column in question. If i do for example the following SQL for a different column say "RETURNED_DATE", when the value of the RETURNED_DATE=NULL before the UPDATE is fired, the TRAIL records are being generated.
    SQL>Update Eps2_Kp_900001058.Rx_Tx Set RETURNED_DATE=RETURNED_DATE Where Tx_Number=1014524 And Nhin_Store_Id=900001058 And Id=4575035;
    SQL>COMMIT;

    This looks like a trailing null issue. Sometimes Oracle decides not to write columns to the redo logs if they are null and they are the last column in the record. What version of Oracle is this? I can ask QA to look into this and see what can be done.
    Thanks for the reply, but
    1) The UPDATE done to a column i.e.POS_REFUND_DATE is NOT THE LAST column of the table=eps2_kp_900001058. Please see the DDL that is in this mail chain. So your observation is not right.
    2) Also the TRAIL records does get generated if the following UPDATE is executed and the value of this column is NOT NULL prior to the firing of this UPDATE
    Update Eps2_Kp_900001058.Rx_Tx Set Pos_Refund_Date=Pos_Refund_Date Where Tx_Number=1014524 And Nhin_Store_Id=900001058 And Id=4575035;
    3) The TRAIL records does not get generted if the following UPDATE is done and the value of the column POS_REFUND_DATE is NULL before the UPDATE is fired.
    Update Eps2_Kp_900001058.Rx_Tx Set Pos_Refund_Date=Pos_Refund_Date Where Tx_Number=1014524 And Nhin_Store_Id=900001058 And Id=4575035;
    Very strange. Hope you can get me an answer.
    Also opened an SR for this issue, the SR details are:
    SR 3-7288541301 : TRAIL records are not getting generated for SELECTED UPDATE SQL statements - DB supplimental logging
    4) Also the DB version is 11gR2, 11.2.0.3, 64 bit enterprise edition on AIX

  • Execute immediate of Anonymous pl/sql block stored in a VARCHAR2 DB Column

    Hi Guys,
    I really hope someone can help me with this.
    I have the following pl/sql anonymous block stored in a varchar2 database column.
    declare
        l_my_val varchar2(32767);
                cursor c_activity is
                SELECT
                      l.DESCRIPTION || decode(l2.DESCRIPTION,null,'',l2.description,  '-' || l2.description) || decode(a.DT,'Y',' - Distributed Training','N',null,null) as value1
                FROM   ACTIVITY a
                      ,MOUNTAINEERING m
                      ,LOV l
                      ,LOV l2
                WHERE  a.JSATFA_ID = 82
                AND    a.SPECIFIC_ACTIVITY_LOV_ID = l.LOV_ID
                AND    m.ACTIVITY_ID(+) = a.ACTIVITY_ID
                AND    m.CLASSIFICATION_LOV_ID = l2.LOV_ID(+);
    begin
    for each_row in c_activity loop
      l_my_val := l_my_val ||  ', ' || each_row.value1;
    end loop;
    :l_value := ltrim (l_my_val, ', ');
    end;  The code is select out of the database and assigned to a local variable within my pl/sql package. The following code should demonstrate what I'm trying to achieve:
    declare
      l_sql varchar2(32767);
      l_value varchar2(32767);
    begin
      select query_sql into l_sql from lov where lov_id = 100;
      execute immediate l_sql using out :l_value;
      dbms_output.put_line(l_value);
    end;However Oracle (10.2.0.2) seems to be doing something funny with the single quotes. and gives the following error:
    ORA-06550: line 1, column 1:
    PLS-00103: Encountered the symbol "" when expecting one of the following:
       begin case declare exit for function goto if loop mod null
       package pragma procedure raise return select separate type
       update while with <an identifier>
       <a double-quoted delimited-identifier> <a bind variable> <<
       form table call close current define delete fetch lock insert
       open rollback savepoint set sql execute commit forall merge
       library OPERATOR_ pipe
    errorIf I embed the code I'm trying to execute within the package i.e
    declare
      l_sql varchar2(32767);
      l_value varchar2(32767);
    begin
      l_sql := q'~declare
        l_my_val varchar2(32767);
                cursor c_activity is
                SELECT
                      l.DESCRIPTION || decode(l2.DESCRIPTION,null,'',l2.description,  '-' || l2.description) || decode(a.DT,'Y',' - Distributed Training','N',null,null) as value1
                FROM   ACTIVITY a
                      ,MOUNTAINEERING m
                      ,LOV l
                      ,LOV l2
                WHERE  a.JSATFA_ID = 82
                AND    a.SPECIFIC_ACTIVITY_LOV_ID = l.LOV_ID
                AND    m.ACTIVITY_ID(+) = a.ACTIVITY_ID
                AND    m.CLASSIFICATION_LOV_ID = l2.LOV_ID(+);
    begin
    for each_row in c_activity loop
      l_my_val := l_my_val ||  ', ' || each_row.value1;
    end loop;
    :l_value := ltrim (l_my_val, ', ');
    end; 
      ~';
      execute immediate l_sql using out :l_value;
      dbms_output.put_line(l_value);
    end;It works perfectly. Notice I have used the q syntax when embedding the sql directly into the package.
    I have tried
    - appending the q syntax directly to query_sql stored in the database
    - escaping the quotes i.e. ' become ''
    Neither method seem to work. We are running 10.2.0.2 on Windows Server 2003. If anyone has any suggestions I would love to hear from you as this has me stumped.
    Regards
    Kris
    - http://kristianjones.blogspot.com

    If you do:
    declare
    l_sql varchar2(32767);
    l_value varchar2(32767);
    begin
    select query_sql into l_sql from lov where lov_id = 100;
    dbms_output.put_line(l_sql);
    end;
    You'll see something like that:
    SELECT
    l.DESCRIPTION || decode(l2.DESCRIPTION,null,'',l2.description, '-' || l2.description) || decode(a.DT,'Y',' - Distributed Training','N',null,null) as value1
    FROM ACTIVITY a
    ,MOUNTAINEERING m
    ,LOV l
    ,LOV l2
    WHERE a.JSATFA_ID = 82
    AND a.SPECIFIC_ACTIVITY_LOV_ID = l.LOV_ID
    AND m.ACTIVITY_ID(+) = a.ACTIVITY_ID
    AND m.CLASSIFICATION_LOV_ID = l2.LOV_ID(+);
    you need to duplicate the '
    you can do many things like:
    CTH@> select * from sqls;
    C
    select first_name || ' ' || last_name as value1 from employees where rownum=1
    1 fila seleccionada.
    CTH@>
    CTH@> ;
    1 declare
    2 l_sql varchar2(32767);
    3 l_value varchar2(32767);
    4 type generic_cursor is ref cursor;
    5
    6 c generic_cursor;
    7
    8 begin
    9 select replace(c, ''', ''''') into l_sql from sqls;
    10
    11 execute immediate l_sql into l_value;
    12 dbms_output.put_line(l_value);
    13* end;
    CTH@> /
    Ellen Abel
    Procedimiento PL/SQL terminado correctamente.
    CTH@>

  • Advice on creating VARCHAR2(4000) columns

    Hi there
    I've a question regarding table(s) design. Following is a table, which has about 10,000 rows.
    As you can see there are two VARCHAR2(2000) columns.
    All rows have these columns with data which are always "full" (avglength = 2000).
    CREATE TABLE L_PROC
    NUM NUMBER(9) NOT NULL,
    TEC VARCHAR2(10 BYTE) NOT NULL,
    ATE DATE NOT NULL,
    PRO NUMBER(4) NOT NULL,
    NPR NUMBER(7) NOT NULL,
    DOC NUMBER(2) DEFAULT 0 NOT NULL,
    COC NUMBER(2) DEFAULT 0 NOT NULL,
    FOC NUMBER(2) DEFAULT 0 NOT NULL,
    SIT CHAR(1 BYTE) NOT NULL,
    EST CHAR(1 BYTE) DEFAULT 'A' NOT NULL,
    DEN DATE NOT NULL,
    SOL NUMBER(9) NOT NULL,
    LOC VARCHAR2(80 BYTE),
    CEE NUMBER(3),
    CTE VARCHAR2(10 BYTE),
    DEC NUMBER(2) DEFAULT null,
    DIA VARCHAR2(2000 BYTE),
    RES      VARCHAR2(2000 BYTE),
    OUT VARCHAR2(80 BYTE),
    NTS VARCHAR2(80 BYTE),
    ETS VARCHAR2(40 BYTE),
    DAL TIMESTAMP(6) NOT NULL
    When record is created in table, DIA is always filled. Then RES will be updated later.
    Now end-users ask for modification which consists in alter these two column to VARCHAR2(4000).
    I'm thinking on create these two columns in a separated table (perhaps using blob or clob), but I'd like to have some advice on this.
    I'm a bit worried about chained rows.
    Can you help me on this ? What solution do you think is better ?
    Thank you in advance.
    Best Regards,
    Helena

    Replying to Maurice questions:
    do you mostly access your table via index or full table scan?
    mostly via index
    how many rows do you access when you execute a select against this table?
    using users criteria the first step is to perform a select count(*) using that criteria; table data is displayed to the user if the result of count(*) is <= 100 rows
    how often do you query the RES and DIA columns?
    never queried, but always displayed; that means never used in WHERE clauses
    how often are inserts and updates executed against this table?
    about 100/day inserts and the same number of updates (which are performed by another user later)
    which is you DB block size?
    16 KB
    which is the average sizes of the columns RES and DIA?
    1900 (will probably increase +1000 chars)
    do you have currently any kind of performance bottleneck (IO/CPU)?
    not yet...
    Helena

  • Can I update 2(or multiple) columns in a table based on one of update col?

    Hi All,
    I have a table emp:
    empno number
    ,salary number
    ,comm number
    Now, the comm column is always a % of the salary column (but still would like to store the comm in the table as a column).
    Assuming that someone get a salary increment and I need to update the commission as well based on the new salary value, should I still use 2 update statements or is there anyway, I can achive in a single update clause itself?
    example:
    if the old values were:
    =============
    1234 10000 1000
    and if I do the following,
    update emp
    set salary = salary + 3000
    ,comm = salary * 10/100
    where empno = 1234;
    the comm value still points to the old salary value and the table looks like:
    emp:
    ===
    1234 13000 1000
    instead of:
    1234 13000 1300 (10% of the new salary - 13000)
    so, the only way to achieve this is to issue 2 update statements? Or is there any way of achieving in one single update statement? Please let me know.
    Am on Oracle 10.2.0.3.0.
    Thanks,
    Srini.

    Or you could create a after update trigger on salary column that updates comm whenever Sal updates.
    What happens if someone else issues an update on salary and forgets to update the commission? Wont you have incorect data then?
    Also, commision is a redundant column . I dont think it is a good idea to have computed values as a separate column.
    Thanks,
    Rajesh,

  • Disallow updates on a single column

    I have a table activity log, which contains the columns user_id , old_data , created_date .
    Now I want to impose a restriction on this table, so that all updates on 1st and 2nd columns are allowed but the update on the last column must not be allowed. A record having values for all the three columns will be inserted. However, subsequent updations to the last column must be strictly stopped. First two columns can be updated.
    How to achieve this ?
    I googled for some time but could not find a solution. Please help me. Thanks in advance.
    Edited by: user11093427 on Jun 18, 2009 8:11 AM

    Hello,
    YOu can create trigger specially when you update the column and raise an application error. You can test following trigger with different scnearios
    CREATE OR REPLACE TRIGGER trg_col
       BEFORE UPDATE OF SALARY
       ON EMP
       REFERENCING NEW AS New OLD AS Old
       FOR EACH ROW
    DECLARE
    BEGIN
       CASE
          WHEN UPDATING
          THEN
             raise_application_error (-20005,
                                      'Column update not allowed ' || :new.sal);
       END CASE;
    EXCEPTION
       WHEN OTHERS
       THEN
          -- Consider logging the error and then re-raise
          RAISE;
    END trg_col;Regards
    OrionNet
    Edited by: OrionNet on Jun 18, 2009 9:51 PM

  • Performance of update query for single column vs multiple column

    Hi All,
    I could not find any answer for this, does it ever matter in terms of performance updating single column versus multiple column in a single update query.
    For eg. table consisting of 15 columns, what would be the difference in performance when one column is update in the single query against another update query where 15 columns are updated.
    Please do keep in mind my table columns in actually could be around 150+.
    Thanks for any information provided.

    If updated columns aren´t on where clause , then the only impact of 15 columns will be a increase on redo generation, and a possible chainning row.
    So since the redo is one of the things that have a large impact, the answer is yes.
    The performance will be slower.
    Regards
    Helio Dias.
    http://heliodias.com
    OCE SQL, OCP 9i

  • How to update person or group column with peopleeditor control values

    Hi,
    I have created custom aspx page and added "PeopleEditor" control(can select multiple users)  in that page. Now I am trying to update person or group column with peopleeditor control values.I am not getting any error if I select single user
    in PeopleEditor control but getting error if I select more than one user.
    UpdateItem(listItem, "ListColumnName",
    listItem.ParentList.ParentWeb.EnsureUser(peopleeditorId.CommaSeparatedAccounts));
    Can anybody help me out to resolve the issue?
    Thank you in advance!!!
    AA.

    First get all the users/groups from the PeapleEditor by using PeapleEditor.ResolvedEntities
    foreach (PickerEntity pickerEntity in peopleEditor.ResolvedEntities)
    SPPrincipalType principalType = (SPPrincipalType)Enum.Parse(typeof(SPPrincipalType), pickerEntity.EntityData["PrincipalType"].ToString());
    if (principalType == SPPrincipalType.User || principalType == SPPrincipalType.SecurityGroup)
    string loginName = pickerEntity.Key;
    //your code here
    else if (principalType == SPPrincipalType.SharePointGroup)
    string groupName = pickerEntity.Key;
    //your code here
    Add all the users/groups in an instance of SPFieldUserValueCollection
    and then update your list item.
    SPFieldUserValueCollection users = new SPFieldUserValueCollection();
    users.Add(new SPFieldUserValue(web,user.ID,user.Name));
    item["YourUserColumn"] = users;
    item.Update();

  • Display checkbox for VARCHAR2(1) column

    Hi, I'm getting all of my stupid questions out this week...
    I have a table with a VARCHAR2(1) column that I restrict to 'Y' or NULL to make a boolean/flag column.
    How do I get JDeveloper/ADF to treat this as a boolean column and display a checkbox?
    In Oracle Designer you could flag the field as boolean and the value 'Y' as checked. Not sure how to do this in JDeveloper.

    Gordon,
    All stupid questions are welcome if they are properly specified ;)
    In your case Create an EO/VO. Attach it to a AM. A Data Control will be created. YOu can then use the attribute in your page and dispaly it as a selectBooleanCheckBox.
    Google for how to create EO/VO/AM and Data Control.

  • Update a database table column via EO

    Hi,
    I want to update a database table column via EO, but somehow the table column is not updated. Could you help if I miss anything?
    Here is my code:
    View SQL:
    select
    ,GoalSheetHeaderEO.srp_goal_header_id
    ,XL.MEANING
    ,GoalSheetHeaderEO.status_code
    ,GoalSheetHeaderEO.start_date GS_START_DATE
    ,GoalSheetHeaderEO.end_date GS_END_DATE
    ,GoalSheetHeaderEO.PERIOD_YEAR
    ,GoalSheetHeaderEO.LAST_UPDATED_BY
    ,GoalSheetHeaderEO.LAST_UPDATE_DATE
    ,GoalSheetHeaderEO.LAST_UPDATE_LOGIN
    ,'N' CHECKED
    from
    xxg2c_srp_goal_headers_all GoalSheetHeaderEO
    ,cn_comp_plans_all comp
    ,jtf_rs_salesreps rs
    ,jtf_rs_resource_extns rse
    ,xxg2c_lookups xl
    ,shr_strct_nodes nod
    ,g2c_goal_shr_emp_assignments_v emp
    CO:
    if (pageContext.getParameter("Update") != null){
    am.invokeMethod("updateGoalSheet");
    AM:
    public void deleteGoalSheet(){
    OAViewObject vo = (OAViewObject)getGoalSheetResultGAVO1();
    GoalSheetResultGAVORowImpl row = (GoalSheetResultGAVORowImpl) vo.first();
    while (row != null)
    if (selectFlag != null)
    if (selectFlag .equals("Y"))
    //row.setAttribute("GsStatusCode",Constants.GOAL_SHEET_STATUS_CODE_DEL);
    row.setStatusCode(Constants.GOAL_SHEET_STATUS_CODE_DEL);
    row = (GoalSheetResultGAVORowImpl) vo.next();
    getTransaction().commit();
    EO:
    public void setStatusCode(String value) {
    if (value.equals(Constants.GOAL_SHEET_STATUS_CODE_DEL)){
    String currentStatus = getStatusCode();
    if(!(currentStatus.equals(Constants.GOAL_SHEET_STATUS_CODE_INPROG)
    ||currentStatus.equals(Constants.GOAL_SHEET_STATUS_CODE_RDYAUD))){
    throw new OAAttrValException(OAException.TYP_ENTITY_OBJECT,
    getEntityDef().getFullName(),
    getPrimaryKey(),
    "StatusCode",
    value,
    "xxg2c goaling",
    "DEBUG -- need message name"
    setAttributeInternal(STATUSCODE, value);
    thanks
    Lei

    Hi Vikram,
    It is just a type error. The delete is a soft delete to change the status to 'DEL'.
    And also the view object is hybrid view object.
    Complete View Object SQL:
    select
    nod.node_id
    ,nod.version_id
    ,emp.status_name
    ,rs.SALESREP_ID
    ,rse.source_name
    ,rse.source_email SRP_EMAIL_ID
    ,rse.source_number SRP_EMPLOYEE_NUMBER
    ,comp.name
    ,GoalSheetHeaderEO.srp_goal_header_id
    ,XL.MEANING
    ,GoalSheetHeaderEO.status_code
    ,GoalSheetHeaderEO.start_date GS_START_DATE
    ,GoalSheetHeaderEO.end_date GS_END_DATE
    ,GoalSheetHeaderEO.PERIOD_YEAR
    ,GoalSheetHeaderEO.LAST_UPDATED_BY
    ,GoalSheetHeaderEO.LAST_UPDATE_DATE
    ,GoalSheetHeaderEO.LAST_UPDATE_LOGIN
    ,DECODE(GoalSheetHeaderEO.PERIOD_YEAR,(SELECT PERIOD_YEAR FROM GL_PERIODS WHERE PERIOD_SET_NAME = 'Fiscal Year' AND SYSDATE BETWEEN YEAR_START_DATE AND END_DATE),DECODE(GoalSheetHeaderEO.STATUS_CODE,'AUTH','copy_enabled','copy_disabled'),'copy_disabled') COPY_FLAG
    ,DECODE(GoalSheetHeaderEO.SRP_GOAL_HEADER_ID,null,'create_enabled',DECODE(GoalSheetHeaderEO.status_code,'AUTH','create_enabled','create_disabled')) CREATE_FLAG
    ,'N' CHECKED
    from
    xxg2c_srp_goal_headers_all GoalSheetHeaderEO
    ,cn_comp_plans_all comp
    ,jtf_rs_salesreps rs
    ,jtf_rs_resource_extns rse
    ,xxg2c_lookups xl
    ,shr_strct_nodes nod
    ,g2c_goal_shr_emp_assignments_v emp
    public void updateGoalSheet(){
    OAViewObject vo = (OAViewObject)getGoalSheetResultGAVO1();
    GoalSheetResultGAVORowImpl row = (GoalSheetResultGAVORowImpl) vo.first();
    while (row != null)
    if (selectFlag != null)
    if (selectFlag .equals("Y"))
    //row.setAttribute("GsStatusCode",Constants.GOAL_SHEET_STATUS_CODE_DEL);
    row.setStatusCode(Constants.GOAL_SHEET_STATUS_CODE_DEL);
    row = (GoalSheetResultGAVORowImpl) vo.next();
    getTransaction().commit();
    thanks for the help.
    Lei

  • "Activity Monitor" utility does not update the "CPU Time" column in real ti

    If I use Activity Monitor to display "All Processes", why doesn't it update the "CPU Time" column in real time? It updates the "% CPU" and others, but not the total "CPU Time". I have all columns viewed if that matters. However if you double click on a process in the Activity Monitor window, the details about the process are displayed in another window (number of threads, ports, CPU Time, Context Switches, Faults, etc), and as long as that detail window exists, the "CPU Time" column is updated in real time in the main Activity Monitor window. Is this a bug or a feature?? Does Leopard do this also? Have lots of free memory so that is not an issue. Thanks...
    -Bob

    I noticed the same behavior reported by Bob: Not regarding the "process filter" or the "update frequency" selected "CPU Time" column is only updated when details dialog is open. I noticed it just today (which triggered the search here), I wonder if this "feature" has been always present or maybe activity monitor is getting lazy?
    Regards,
    Mauro

  • How to update zero to a column value when record does not exist in table but should display the column value when it exists in table?

    Hello Everyone,
    How to update zero to a column value when record does not exist in table  but should display the column value when it exists in table
    Regards
    Regards Gautam S

    As per my understanding...
    You Would like to see this 
    Code:
    SELECT COALESCE(Salary,0) from Employee;
    Regards
    Shivaprasad S
    Please mark as answer if helpful
    Shiv

  • Updating a LONG RAW column

    I have a table with a column of type LONG RAW that can take binary content of arbitrary length (up to 2 GB). I try to copy content from one row to another using the following SQL:
    UPDATE TEAM_ADM.Content SET (Content, ContentType) =
    (SELECT Content, ContentType FROM Content WHERE ContentId = in_SourceContentID)
    WHERE ContentID = in_TargetContentID;
    Content.Content is the column in question.
    Oracle returns with error ORA-00997:
    ORA-00997 illegal use of LONG datatype
    Cause: A value of datatype LONG was used in a function or in a DISTINCT, WHERE, CONNECT BY, GROUP BY, or ORDER BY clause. A LONG value can only be used in a SELECT clause.
    Action: Remove the LONG value from the function or clause.
    Question: How can I copy a LONG RAW column from one row to another?
    Regards,
    Kjell Tangen

    Hello,
    It seems that the Long datatypes in Oracle have a lot of restrictions. According to
    this blog:LONG and LONG RAW columns cannot be used in distributed SQL statements.
    In that case, you should update the long raw column on the Oracle side. You can try to use openquery as Rick post above to send the SQL statment to Oracle and execute.
    Regards,
    Fanny Liu
    Fanny Liu
    TechNet Community Support

  • Can i update more then one column using select query.

    Dear All,
    Can i update more then one column of target table A from source table B. Like
    Update table A set A.A1 = (Select B.B1 from B where A.A3 = B.B3).
    Above stmt. I am updating only one column. But I want to update more then one column A.A1 and A.A2
    Plz give me the possible ways.
    Thanks,
    Vikas

    Yes you can do. Try the below Query
    Update A set (A.A1,A.A2) = (Select B.B1,B.B2 from B where A.A3 = B.B3)

  • Unique constraint violation while updating a non PK column

    Hi,
    I seem to have found this strange error.
    What I try to do is bulk fetch a cursor in some table arrays. with limit of 1000
    Then using a forall and a save exceptions at the end
    I update a table with the values inside one of the table arrays.
    The column I update is not part of a PK
    I catch the error message: ORA-24381
    by using PRAGMA exception_init(dml_errors, -24381);
    and later on :
    WHEN dml_errors THEN
    errors := SQL%BULK_EXCEPTIONS.COUNT;
    FOR i IN 1..sql%BULK_EXCEPTIONS.count LOOP
    lr_logging.parameters:= 'index = ' || sql%BULK_EXCEPTIONS(i).error_index || 'error = ' ||Sqlerrm(-sql%BULK_EXCEPTIONS(i).error_code) ;
    END LOOP;
    I insert these errors in another table. and i get 956 errors
    first one is :
    index = 3error = ORA-00001: unique constraint (.) violated
    last one is
    index = 1000error = ORA-00001: unique constraint (.) violated
    How can this be.Since i don't update in a PKcolumn.
    FULL CODE IS:
    PROCEDURE Update_corr_values( as_checkdate_from IN VARCHAR2,
    as_checkdate_until IN VARCHAR2,
    as_market IN VARCHAR2
    IS
    LS_MODULE_NAME CONSTANT VARCHAR2(30) := 'update_values';
    lr_logging recon_logging.logrec;
    CURSOR lc_update IS
    SELECT /*+ORDERED*/c.rowid,c.ralve_record_id,d.value,c.timestamp,f.value
    FROM rcx_allocated_values a,
    rcx_allocated_values b,
    meter_histories e,
    rcx_allocated_lp_value c,
    rcx_allocated_lp_value d,
    counter_values f
    WHERE a.slp_type NOT IN ('S89', 'S88', 'S10', 'S30') --AELP
    AND b.slp_type IN ('S89', 'S88') --residu
    AND a.valid_from >= to_date(as_checkdate_from,'DDMMYYYY HH24:MI')
    AND a.valid_to <= to_date(as_checkdate_until,'DDMMYYYY HH24:MI')
    AND a.market = as_market
    AND a.market = b.market
    AND a.ean_sup = b.ean_sup
    AND a.ean_br = b.ean_br
    AND a.ean_gos = b.ean_gos
    AND a.ean_dgo = b.ean_dgo
    AND a.direction = b.direction
    AND a.valid_from = b.valid_from
    AND a.valid_to = b.valid_to
    AND c.ralve_record_id = a.record_id
    AND d.ralve_record_id = b.record_id
    AND c.TIMESTAMP = d.TIMESTAMP
    AND e.ASSET_ID = 'KCF.SLP.' || a.SLP_TYPE
    --AND f.timestamp between to_date(gs_checkdate_from,'ddmmyyyy') and to_Date(as_checkdate_until,'ddmmyyyy')
    AND e.SEQ = f.MHY_SEQ
    AND f.TIMESTAMP =c.timestamp - 1/24
    ORDER BY c.rowid;
    TYPE t_value IS TABLE OF RCX_ALLOCATED_LP_VALUE.VALUE%TYPE;
    TYPE t_kcf IS TABLE OF COUNTER_VALUES.VALUE%TYPE;
    TYPE t_timestamp IS TABLE OF RCX_ALLOCATED_LP_VALUE.TIMESTAMP%TYPE;
    TYPE t_ralverecord_id IS TABLE OF RCX_ALLOCATED_LP_VALUE.RALVE_RECORD_ID%TYPE;
    TYPE t_row IS TABLE OF UROWID;
    ln_row t_row :=t_row();
    lt_value t_value := t_Value();
    lt_kcf t_kcf := t_kcf();
    lt_timestamp t_timestamp := t_timestamp();
    lt_ralve t_ralverecord_id := t_ralverecord_id();
    v_bulk NUMBER := 1000;
    val number;
    kcf number;
    ralve number;
    times date;
    dml_errors EXCEPTION;
    errors NUMBER;
    PRAGMA exception_init(dml_errors, -24381);
    BEGIN
    --setting arguments for the logging record
    lr_logging.module := LS_MODULE_NAME;
    lr_logging.context := 'INFLOW_ALL_VALUES_PARTS';
    lr_logging.logged_by := USER;
    lr_logging.parameters := 'Date time started: ' || TO_CHAR(sysdate,'DD/MM/YYYY HH24:MI');
    -- log debugs
    recon_logging.set_logging_env (TRUE, TRUE);
    recon_logging.log_event(lr_logging,'D');
    OPEN lc_update;
    LOOP
    FETCH lc_update BULK COLLECT INTO ln_row,lt_ralve,lt_value,lt_timestamp,lt_kcf LIMIT v_bulk;
    FORALL i IN NVL(lt_value.first,1)..NVL(lt_value.last,0) SAVE EXCEPTIONS
    UPDATE RCX_ALLOCATED_LP_VALUE
    SET VALUE = VALUE * lt_value(i) * lt_kcf(i)
    WHERE rowid =ln_row(i);
    COMMIT;
    lt_value.delete;
    lt_timestamp.delete;
    lt_ralve.delete;
    lt_kcf.delete;
    ln_row.delete;
    EXIT WHEN lc_update%NOTFOUND;
    END LOOP;
    CLOSE lc_update;
    recon_logging.log_event(lr_logging,'D');
    lr_logging.parameters := 'Date time ended: ' || TO_CHAR(sysdate,'DD/MM/YYYY HH24:MI');
    recon_logging.log_event(lr_logging,'D');
    --to be sure
    COMMIT;
    EXCEPTION
    WHEN dml_errors THEN
    recon_logging.set_logging_env(TRUE,TRUE);
    lr_logging.module := 'updatevalues';
    lr_logging.context := 'exception';
    lr_logging.logged_by := USER;
    lr_logging.parameters := 'in dml_errors';
    recon_logging.log_event(lr_logging);
    errors := SQL%BULK_EXCEPTIONS.COUNT;
    lr_logging.parameters:=errors;
    recon_logging.log_event(lr_logging);
    lr_logging.parameters :=('Number of errors is ' || errors);
    --DBMS_OUTPUT.PUT_LINE('Number of errors is ' || errors);
    FOR i IN 1..sql%BULK_EXCEPTIONS.count LOOP
    lr_logging.parameters:= 'index = ' || sql%BULK_EXCEPTIONS(i).error_index || 'error = ' ||Sqlerrm(-sql%BULK_EXCEPTIONS(i).error_code) ;
    recon_logging.log_event(lr_logging);
    END LOOP;
    --recon_logging.set_logging_env(TRUE,TRUE);
    --recon_logging.log_event(lr_logging);
    commit;
    WHEN OTHERS THEN
    lr_logging.module := 'updatevalues';
    lr_logging.context := 'exception';
    lr_logging.logged_by := USER;
    recon_logging.set_logging_env(TRUE,TRUE);
    lr_logging.parameters := 'in others error=' || SQLERRM;
    recon_logging.log_event(lr_logging);
    commit;--to look which is truly the last (else only commit after 1000)
    --raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
    END Update_corr_values;

    Hi,
    No I didn't update a unique constraint.
    But I found out that there is a trigger that causes the unique constraint while updating in the table.
    Silly mistake.Didn't know there was a trigger there.
    Thx anyway.
    Greetz

Maybe you are looking for