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

    −119

    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
    19. 19
    20. 20
    CREATE TABLE BOOL_TABLE
    (
    	BOOL_ID bit NOT NULL,
    	BOOL_NAME varchar(3) NOT NULL
    ) ON PRIMARY
    
    INSERT INTO BOOL_TABLE (BOOL_ID, BOOL_NAME)
    VALUES (0, 'Да')
    
    INSERT INTO BOOL_TABLE (BOOL_ID, BOOL_NAME)
    VALUES (1, 'Нет')
    
    EXEC sys.sp_addextendedproperty 
    @name=N'MS_Description'
    , @value=N'Технологическая таблица для преобразования булевых значений (0,1) в текст (Нет, Да)' 
    , @level0type=N'SCHEMA'
    ,@level0name=N'dbo'
    , @level1type=N'TABLE'
    ,@level1name=N'BOOL_TABLE'
    GO

    Капитан какбэ намекает...

    HellMaster_HaiL, 02 Февраля 2012

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

    −114

    1. 1
    2. 2
    declare @date datetime
    set @date=convert(datetime, cast(day(getdate()) as varchar(2))+'.'+cast(month(getdate()) as varchar(2))+'.'+cast(year(getdate()) as char(4)), 105)

    MS SQL
    Так и не удалось выяснить, почему автор не написал просто
    set @date=getdate()

    German_1984, 24 Января 2012

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

    −117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    SELECT *
    FROM table1
    WHERE
    COALESCE(
      field1,
      field2,
      field3,
      field4,
      field5,
      fieldN,  
      "lol"
    )!="lol"

    huitka, 24 Января 2012

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

    −113

    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
    with mycte as
    (
    
    select dateadd(dd, 1,@dato1)as  Dato
    
    union all
    select Dato + 1
    from    mycte    
    where   Dato + 1 <= @dato2
    )
    select count(Dato) as antall
    from    mycte
    where Dato <=@dato2
    OPTION (MAXRECURSION 0)

    Суровые нордические ребята пытаются найти разницу в днях между двумя датами с помощью рекурсии.
    И ведь dateadd они знают, а про datediff нет.
    Так же веселит OPTION (MAXRECURSION 0), который обычно устанавливают с параметром отличным от 0 в тех случаях, когда рекурсия убегает в бесконечность, чтобы хоть как-то ограничить ее. Видимо, эхо дебаггинга сего замечательного кода.

    DBdev, 23 Января 2012

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

    −129

    1. 1
    SELECT COUNT(*)  FROM passwords WHERE program=program AND website=website AND login=login AND password=password

    Okay :(

    TBoolean, 12 Января 2012

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

    −113

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    select o.*
    from (select rownum rw
               , o.*
          from (select o.* from all_tables o order by table_name) o
          where rownum < 20
         ) o
    where o.rw >= 10;

    Стандартный аналог "LIMIT 9,10" в Oracle.
    http://www.sql.ru/faq/faq_topic.aspx?fid=171

    huitka, 12 Января 2012

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

    −108

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    update People
             set PeopleIsJunior='N'
           where PeopleIsJunior='Y'
             and month(BirthDay)=(select month(getdate()))
             and year(BirthDay)=(select year(getdate())-18) 
             and day(BirthDay)=(select day(getdate()))

    Еженочно часа 3 делаем людей совершеннолетними. людей много , миллионы, и с табличкой активно работают.
    Наличие индекса по BirthDay не играет никакого рояля, т.к. функции.
    t-sql если чо.

    bliznezz, 06 Января 2012

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

    −103

    1. 1
    вайп

    TarasGovno, 04 Января 2012

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

    −109

    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
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    end;
    create or replace package body "MUT_TABLE" is
    type a_table is table of number index by pls_integer;
    position a_table;
    empty a_table;
    
    procedure SET_INITIAL_STATE
    as
    begin
    position:=empty;
    end SET_INITIAL_STATE;
    
    procedure BEF_TR( ID IN NUMBER, A IN NUMBER)
    as
    
    begin
    
    position (ID):= A;
    
    end BEF_TR;
    
    procedure AFT_TR
    is
    v number;
    
    begin
    v:=position.FIRST;
    while v is not null loop
    
    update A set
    A=1,
    B='!!!!!!!!!'
    where A = 1;
    v:= position.next(v); 
    end loop;
    
    end AFT_TR;
    
    end "MUT_TABLE";

    kikis, 14 Декабря 2011

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

    −111

    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
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    CREATE TABLE "A" 
    ( "ID" NUMBER, 
    "A" NUMBER, 
    "B" VARCHAR2(20), 
    CONSTRAINT "A_PK" PRIMARY KEY ("ID") ENABLE
    )
    /
    
    CREATE OR REPLACE TRIGGER "A_2" 
    AFTER
    insert or update on "A"
    for each row
    begin
    
    mut_table.bef_tr(:NEW.ID,:NEW.A);
    
    end;
    /
    ALTER TRIGGER "A_2" ENABLE
    /
    
    CREATE OR REPLACE TRIGGER "A_3" 
    AFTER
    insert on "A"
    declare
    b number;
    
    begin
    mut_table.aft_tr;
    end;
    /
    ALTER TRIGGER "A_3" ENABLE
    /
    
    CREATE OR REPLACE TRIGGER "A_AT" 
    BEFORE
    insert or update on "A"
    for each row
    declare 
    v number;
    PRAGMA AUTONOMOUS_TRANSACTION;
    begin
    
    :NEW.A:=:NEW.A+1;
    :NEW.B:='!!!!!!!!!!';
    
    commit;
    
    end;
    /
    ALTER TRIGGER "A_AT" DISABLE
    /
    
    CREATE OR REPLACE TRIGGER "A_I_S" 
    BEFORE
    insert or update on "A"
    begin
    mut_table.set_initial_state;
    end;
    /
    ALTER TRIGGER "A_I_S" ENABLE
    /
    
    CREATE OR REPLACE TRIGGER "A_T1" 
    BEFORE
    insert or update on "A"
    for each row
    
    begin
    
    update A set 
    A = :NEW.A+1,
    B = 'was incremented'
    where A = :NEW.A;
    end;
    /
    ALTER TRIGGER "A_T1" DISABLE
    /
    
    CREATE OR REPLACE TRIGGER "BI_A" 
    before insert on "A" 
    for each row 
    begin 
    if :NEW."ID" is null then 
    select "A_SEQ".nextval into :NEW."ID" from dual; 
    end if; 
    end; 
    
    /
    ALTER TRIGGER "BI_A" ENABLE
    /
    
    
    create or replace package MUT_TABLE as
    
    procedure set_initial_state;
    procedure bef_tr(ID number,A NUMBER);
    procedure aft_tr;

    kikis, 14 Декабря 2011

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