macrofish

tsql313213

Mar 10th, 2014
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. /*
  2. CREATE TABLE Teacher
  3. (
  4. login char(5),
  5. fname varchar(30),
  6. lname varchar(50),
  7. email varchar(50),
  8. department int,
  9. primary key(login)
  10. );
  11.  
  12.  
  13. CREATE TABLE Department
  14. (
  15. id int IDENTITY(1,1),
  16. name varchar(50),
  17. head char(5) FOREIGN KEY REFERENCES Teacher(login)
  18. primary key(id)
  19. );
  20.  
  21.  
  22. drop table teacher
  23.  
  24.  
  25. ALTER TABLE Teacher
  26. ADD FOREIGN KEY (department)
  27. REFERENCES Department(id)
  28. */
  29.  
  30.  
  31. /*
  32. insert into department
  33. values('lamy',NULL)
  34.  
  35.  
  36. insert into department
  37. values('homolove',NULL),('bukvy',NULL)
  38. insert into department
  39. values('borci',NULL)
  40.  
  41. insert into teacher values ('sin01','libor','sindel','sin@dsada',4),('hom10','jan','hjomola','hom@dsadas',3),('zik00','adam','ziki','zik@@@',1),('klo00','ad','klo','klo@@',4)
  42.  
  43. update department
  44. set head='hom10'
  45. where name = 'homolove'
  46.  
  47. update department
  48. set head = 'zik00'
  49. where name = 'bukvy'
  50.  
  51. update department
  52. set head = 'klo00'
  53. where name = 'borci'
  54.  
  55. */
  56. /*
  57. ALTER PROCEDURE PrintReport
  58. AS
  59. DECLARE @login char(5)
  60. DECLARE @fname varchar(30)
  61. DECLARE @lname varchar(50)
  62. DECLARE @email varchar(50)
  63. DECLARE @department int
  64. DECLARE teachers cursor for (
  65. select * from teacher
  66. where department in
  67. (
  68. SELECT department from
  69. (
  70. SELECT department, count(department) as pocet_ucitelu from teacher t join department d on t.department = d.id group by department
  71. )tmp
  72. where tmp.pocet_ucitelu > 1)
  73. )
  74. BEGIN
  75. open teachers
  76. fetch next from teachers
  77. into @login,@fname,@lname,@email,@department
  78. while @@FETCH_STATUS = 0
  79. begin
  80. print(@login + ' ' + @fname + ' ' + @lname + ' ' + @email + ' ' + cast(@department as varchar) )
  81. fetch next from teachers into @login,@fname,@lname,@email,@department
  82. end
  83. close teachers
  84. deallocate teachers
  85. END
  86.  
  87. exec PrintReport
  88. */
  89.  
  90.  
  91. ALTER PROCEDURE CopyTableDate(@tabulka varchar(50))
  92. AS
  93.  
  94. DECLARE c_column_list CURSOR for (SELECT COLUMN_name, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH from INFORMATION_SCHEMA.COLUMNS where INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = @tabulka)
  95. DECLARE @s varchar(500)
  96.  
  97.  
  98. DECLARE @column_name varchar(50)
  99. DECLARE @data_type varchar(50)
  100. DECLARE @length int
  101.  
  102. DECLARE @count int
  103. DECLARE @c varchar
  104. DECLARE @tab varchar(30)
  105. BEGIN
  106. set @count = @@rowcount
  107. set @tab = @tabulka + '_dcp ('
  108. set @s = 'CREATE TABLE' + @tab
  109. open c_column_list
  110. fetch next from c_column_list
  111. into @column_name, @data_type, @length
  112. set @s = @s + @column_name + ' ' + @data_type + '(' + cast(@length as varchar) + ')'
  113.  
  114. while @@FETCH_STATUS = 0
  115. begin
  116. fetch next from c_column_list into @column_name, @data_type, @length
  117. set @s = @s + ','+@column_name + ' ' + @data_type + '(' + cast(@length as varchar) + ')'
  118. end
  119. close c_column_list
  120. deallocate c_column_list
  121.  
  122. set @s = @s + ');'
  123. print @s
  124.  
  125. END
  126.  
  127.  
  128. execute CopyTableDate 'Teacher'
Advertisement
Add Comment
Please, Sign In to add comment