1. SQL / Говнокод #8316

    −110

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    -- Create table
    create global temporary table REPLDATALOBS
    (
      dummy       VARCHAR2(1),
      table_name  VARCHAR2(30) not null,
      column_name VARCHAR2(30) not null,
      row_id      VARCHAR2(4000) not null,
      position    NUMBER not null,
      data        VARCHAR2(4000)
    )
    on commit delete rows;
    -- Create/Recreate primary, unique and foreign key constraints 
    alter table REPLDATALOBS
      add constraint C_REPLDATALOBS_PK primary key (ROW_ID, TABLE_NAME, COLUMN_NAME, POSITION);
    -- Grant/Revoke object privileges 
    grant select, insert, update, delete, references, alter, index on REPLDATALOBS to PUBLIC;

    Продакшн Oracle10g, PK из 4х элементов, а один из 4000 символов Т_Т блжад, что за жизнь ..........

    d4rw1n1s7, 27 Октября 2011

    Комментарии (4)
  2. SQL / Говнокод #8215

    −115

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    SELECT product.entity_id as pid, 
           vTitle.value as title, vLength.value as length, vWidth.value as width, vHeight.value as height, vWeight.value as weight, vCapacity.value as capacity, vImg.value as img,
           tShort.value as short, tText.value as text,
           dPrice.value as price,
           cParent.category_id as parent
    FROM catalog_product_entity as product
    LEFT JOIN catalog_product_entity_varchar as vTitle ON vTitle.entity_id=product.entity_id AND vTitle.attribute_id=60
    LEFT JOIN catalog_product_entity_varchar as vLength ON vLength.entity_id=product.entity_id AND vLength.attribute_id=122
    LEFT JOIN catalog_product_entity_varchar as vWidth ON vWidth.entity_id=product.entity_id AND vWidth.attribute_id=123
    LEFT JOIN catalog_product_entity_varchar as vHeight ON vHeight.entity_id=product.entity_id AND vHeight.attribute_id=124
    LEFT JOIN catalog_product_entity_varchar as vWeight ON vWeight.entity_id=product.entity_id AND vWeight.attribute_id=69
    LEFT JOIN catalog_product_entity_varchar as vCapacity ON vCapacity.entity_id=product.entity_id AND vCapacity.attribute_id=125
    LEFT JOIN catalog_product_entity_varchar as vImg ON vImg.entity_id=product.entity_id AND vImg.attribute_id=74
    LEFT JOIN catalog_product_entity_text as tShort ON tShort.entity_id=product.entity_id AND tShort.attribute_id=62
    LEFT JOIN catalog_product_entity_text as tText ON tText.entity_id=product.entity_id AND tText.attribute_id=61
    LEFT JOIN catalog_product_entity_decimal as dPrice ON dPrice.entity_id=product.entity_id AND dPrice.attribute_id=64
    LEFT JOIN (SELECT c.category_id, c.product_id FROM catalog_category_product as c ORDER BY c.category_id DESC) as cParent ON cParent.product_id=product.entity_id
    GROUP BY cParent.product_id ORDER BY cParent.product_id

    Мой говнокод-неговнокод по экспорту товара из Magento в нашу CMS

    Android991, 17 Октября 2011

    Комментарии (5)
  3. SQL / Говнокод #8194

    −119

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    ...
          IF  i.TYPE IS NOT NULL  AND i.TYPE IS NOT NULL  THEN
           INSERT INTO R_ACTIVITY_PARAMETER( ACTIVE_FLAG,PROPERTY,PARAMETER_DOMAIN,SOURCE,DESCRIPTION,CODE)
             VALUES('1',i.TYPE,i.R_ACTIVITY_1_INS_180,i.SOURCE_TYPE,i.DESCRIPTION,i.TYPE);
    ...

    Oracle 10.2
    Может быть это какой-то "нездоровый" кодогенератор...

    slbsomeone, 14 Октября 2011

    Комментарии (10)
  4. SQL / Говнокод #8193

    −110

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    UPDATE ... 
    SET ...
    WHERE ...
         AND NVL(fndr_constraint,'ABC')=NVL('','ABC')
    ...

    Oracle 10.2 продакшн код.
    Это прям какое-то нездоровое влечение к NVL...

    slbsomeone, 14 Октября 2011

    Комментарии (5)
  5. SQL / Говнокод #8185

    −109

    1. 1
    SELECT 1 INTO iResult FROM dual;

    Oracle. Присвоение переменной iResult значения 1.

    chaoswithin, 13 Октября 2011

    Комментарии (7)
  6. SQL / Говнокод #8174

    −147

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    SELECT FIRST ((SELECT COUNT(*)/2 + MOD(COUNT(*),2) 
                   FROM REFSTATUS r3)) r.STATUSID, r.STATUSNAME, r2.STATUSID, r2.STATUSNAME
    FROM REFSTATUS r 
    LEFT JOIN REFSTATUS r2 ON r2.STATUSID = (SELECT FIRST 1 SKIP ((SELECT COUNT(*)/2 + MOD(COUNT(*),2)
                                                                    FROM REFSTATUS r4) +
                                                                   (SELECT COUNT(1)
                                                                    FROM REFSTATUS r5 
                                                                    WHERE r5.STATUSID < r.STATUSID)) r1.STATUSID 
                                              FROM REFSTATUS r1
                                              ORDER BY 1)
    ORDER BY 1

    Абсолютно бессмысленный SQL-запрос, который выводит содержимое двух полей таблицы REFSTATUS в две колонки пополам (Используется SQL-Firebird)

    selinta, 12 Октября 2011

    Комментарии (5)
  7. SQL / Говнокод #8161

    −110

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    ...
          IF  i.R_LITHOLOG_1_UPD_173 IS NOT NULL  AND i.R_LITHOLOG_1_INS_69 IS NOT NULL  THEN
           INSERT INTO R_LITHOLOGY( SOURCE,DESCRIPTION,CODE,NAME,ACTIVE_FLAG)
             VALUES(i.SOURCE,i.DESCRIPTION,i.R_LITHOLOG_1_UPD_173,i.CODE,NVL(i.R_LITHOLOG_1_INS_69,'1'));
    ...

    Вдруг i.R_LITHOLOG_1_INS_69 IS NULL ?
    Но почему тогда к i.R_LITHOLOG_1_UPD_173 такое доверие?

    slbsomeone, 11 Октября 2011

    Комментарии (3)
  8. SQL / Говнокод #8156

    −153

    1. 1
    2. 2
    3. 3
    SELECT COUNT(*) INTO v_inserted_data FROM f2s.column_map 
    WHERE old_id='TYPE='||i.pk_0 AND migration_id='fin95_aral' 
    AND fndr_table='R_ALLOWABLE' AND UPPER(NVL(fndr_constraint,'null'))=UPPER('NULL');

    Oracle 10.2 PL/SQL. продакшн код.
    Условие поиска NULL убило...

    slbsomeone, 11 Октября 2011

    Комментарии (7)
  9. SQL / Говнокод #8155

    −113

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    CURSOR v_cursor IS
      SELECT
       ...
       NVL(DECODE(record_status,'CURRENT',1,0),'1')       r_grain_ro_1_ins_64,
      ...

    Это в продакшн коде.
    Oracle 10.2, PL/SQL

    slbsomeone, 11 Октября 2011

    Комментарии (3)
  10. SQL / Говнокод #8122

    −107

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    SELECT SUBSTR(exp, 1, 20) "expression", (CASE WHEN SUBSTR(exp, 6, 1) = '+' THEN (CASE WHEN SUBSTR(exp, 3, 1) = '+' THEN TO_NUMBER(SUBSTR(exp, 1, 2))
     + TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '-' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) - TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE 
    WHEN SUBSTR(exp, 3, 1) = '*' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) * TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '/' THEN 
    TO_NUMBER(SUBSTR(exp, 1, 2)) / TO_NUMBER(SUBSTR(exp, 4, 2)) END END END END) + TO_NUMBER(SUBSTR(exp, 7, 2)) ELSE CASE WHEN SUBSTR(exp, 6, 1) = '-' 
    THEN (CASE WHEN SUBSTR(exp, 3, 1) = '+' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) + TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '-' THEN 
    TO_NUMBER(SUBSTR(exp, 1, 2)) - TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '*' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) * 
    TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '/' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) / TO_NUMBER(SUBSTR(exp, 4, 2)) END END END END) 
    - TO_NUMBER(SUBSTR(exp, 7, 2)) ELSE CASE WHEN SUBSTR(exp, 6, 1) = '*' THEN (CASE WHEN SUBSTR(exp, 3, 1) = '+' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) + 
    TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '-' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) - TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN 
    SUBSTR(exp, 3, 1) = '*' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) * TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '/' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) / 
    TO_NUMBER(SUBSTR(exp, 4, 2)) END END END END) * TO_NUMBER(SUBSTR(exp, 7, 2)) ELSE CASE WHEN SUBSTR(exp, 6, 1) = '/' THEN (CASE WHEN SUBSTR(exp, 3, 1) = '+' THEN 
    TO_NUMBER(SUBSTR(exp, 1, 2)) + TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '-' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) - TO_NUMBER(SUBSTR(exp, 4, 2)) 
    ELSE CASE WHEN SUBSTR(exp, 3, 1) = '*' THEN TO_NUMBER(SUBSTR(exp, 1, 2)) * TO_NUMBER(SUBSTR(exp, 4, 2)) ELSE CASE WHEN SUBSTR(exp, 3, 1) = '/' THEN 
    TO_NUMBER(SUBSTR(exp, 1, 2)) / TO_NUMBER(SUBSTR(exp, 4, 2)) END END END END) / TO_NUMBER(SUBSTR(exp, 7, 2)) END END END END) "result" FROM lab3_2;

    Сидел я на прошлой лабе и делал значит задания по Oracle и вот последнее задание было таким:

    "Дана таблица с единственной колонкой (строкового типа) с выражениями вида:’xx*xx*xx’ где xx – символы цифр 0..9, * - один из символов математических операций: *+-/ Например, таким выражениями являются ‘01*23+34’ ‘32+13-12’ и т.д. Требуется создать таблицу и заполнить ее строками содержащими такие выражения (не менее 5 строк), составить оператор SELECT который используя данные из этой таблицы выведет строки вида ‘<исходное выражение>=<вычисленный результат>’. Задание выполнить без учета приоритетности операций."

    Вооружившись Notepad++ я составил вот такое вот запросище, которое работает между прочим :) Для повторения эксперимента нужно создать таблицу lab3_2 с полем exp строкового типа, ну и внести в нее пару каких-нибудь выражений.

    10a10b1s, 08 Октября 2011

    Комментарии (20)