sashomaga

T-SQL

Jul 31st, 2013
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.78 KB | None | 0 0
  1. EXEC sp_who
  2.  
  3. ---------------------------------------------------------------------
  4.  
  5. USE TelerikAcademy
  6. GO
  7.  
  8. DECLARE @table VARCHAR(50) = 'Projects'
  9. DECLARE @query VARCHAR(50) = 'SELECT * FROM ' + @table;
  10. EXEC(@query)
  11.  
  12. ---------------------------------------------------------------------
  13.  
  14. USE TelerikAcademy
  15.  
  16. DECLARE @EmpID varchar(11),
  17.   @LastName char(20)
  18. SET @LastName = 'King'
  19.  
  20. SELECT @EmpID = EmployeeId
  21.  FROM  Employees
  22.  WHERE LastName = @LastName
  23.  
  24. SELECT @EmpID AS EmployeeID
  25.  
  26. ---------------------------------------------------------------------
  27.  
  28. SELECT AVG(Salary) AS AvgSalary
  29. FROM Employees
  30.  
  31. ---------------------------------------------------------------------
  32.  
  33. SELECT DB_NAME() AS [Active Database]
  34.  
  35. ---------------------------------------------------------------------
  36.  
  37. SELECT
  38.   DATEDIFF(Year, HireDate, GETDATE()) * Salary / 1000
  39.   AS [Annual Bonus]
  40. FROM Employees
  41.  
  42. ---------------------------------------------------------------------
  43.  
  44. IF ((SELECT COUNT(*) FROM Employees) >= 100)
  45. BEGIN
  46.   PRINT 'Employees are at least 100'
  47. END
  48.  
  49. ---------------------------------------------------------------------
  50.  
  51. IF ((SELECT COUNT(*) FROM Employees) >= 100)
  52.   BEGIN
  53.     PRINT 'Employees are at least 100'
  54.   END
  55. ELSE
  56.   BEGIN
  57.     PRINT 'Employees are less than 100'
  58.   END
  59.  
  60. ---------------------------------------------------------------------
  61.  
  62. DECLARE @n int = 10
  63.  
  64. PRINT 'The numbers from 10 down to 1 are:'
  65. WHILE (@n > 0)
  66.   BEGIN
  67.     PRINT @n
  68.     SET @n = @n - 1
  69.   END
  70.  
  71.   ---------------------------------------------------------------------
  72.  
  73. DECLARE @n int = 10
  74. PRINT 'Calculating factoriel of ' +
  75.   CAST(@n as varchar) + ' ...'
  76.  
  77. DECLARE @factorial numeric(38) = 1
  78. WHILE (@n > 1)
  79.   BEGIN
  80.     SET @factorial = @factorial * @n
  81.     SET @n = @n - 1
  82.   END
  83.  
  84. PRINT @factorial
  85.  
  86. ---------------------------------------------------------------------
  87.  
  88. SELECT Salary, [Salary Level] =
  89.   CASE
  90.      WHEN Salary BETWEEN 0 and 9999 THEN 'Low'
  91.      WHEN Salary BETWEEN 10000 and 30000 THEN 'Average'
  92.      WHEN Salary > 30000 THEN 'High'
  93.      ELSE 'Unknown'
  94.   END
  95. FROM Employees
  96.  
  97. ---------------------------------------------------------------------
  98.  
  99. DECLARE @n tinyint
  100. SET @n = 5
  101. IF (@n BETWEEN 4 and 6)
  102.  BEGIN
  103.   WHILE (@n > 0)
  104.    BEGIN
  105.     SELECT @n AS 'Number',
  106.       CASE
  107.         WHEN (@n % 2) = 1
  108.           THEN 'EVEN'
  109.         ELSE 'ODD'
  110.        END AS 'Type'
  111.     SET @n = @n - 1
  112.    END
  113.  END
  114. ELSE
  115.  PRINT 'NO ANALYSIS'
  116. GO
  117.  
  118. ---------------------------------------------------------------------
  119.  
  120. USE TelerikAcademy
  121. GO
  122.  
  123. CREATE PROC usp_SelectSeniorEmployees
  124. AS
  125.   SELECT *
  126.    FROM Employees
  127.    WHERE DATEDIFF(Year, HireDate, GETDATE()) > 5
  128. GO
  129.  
  130. ---------------------------------------------------------------------
  131.  
  132. EXEC usp_SelectSeniorEmployees
  133.  
  134. ---------------------------------------------------------------------
  135.  
  136. ALTER PROC usp_SelectSeniorEmployees
  137. AS
  138.   SELECT FirstName, LastName, HireDate,
  139.     DATEDIFF(Year, HireDate, GETDATE()) as Years
  140.   FROM Employees
  141.   WHERE DATEDIFF(Year, HireDate, GETDATE()) > 5
  142.   ORDER BY HireDate
  143. GO
  144.  
  145. EXEC usp_SelectSeniorEmployees
  146.  
  147. ---------------------------------------------------------------------
  148.  
  149. EXEC sp_depends 'usp_SelectSeniorEmployees'
  150.  
  151. ---------------------------------------------------------------------
  152.  
  153. DROP PROC usp_SelectSeniorEmployees
  154.  
  155. ---------------------------------------------------------------------
  156.  
  157. CREATE PROC usp_SelectEmployeesBySeniority(
  158.   @minYearsAtWork int = 5)
  159. AS
  160.   SELECT FirstName, LastName, HireDate,
  161.     DATEDIFF(Year, HireDate, GETDATE()) as Years
  162.   FROM Employees
  163.   WHERE DATEDIFF(Year, HireDate, GETDATE()) >
  164.     @minYearsAtWork
  165.   ORDER BY HireDate
  166. GO
  167.  
  168. EXEC usp_SelectEmployeesBySeniority 10
  169.  
  170. EXEC usp_SelectEmployeesBySeniority
  171.  
  172. ---------------------------------------------------------------------
  173.  
  174. CREATE PROCEDURE dbo.usp_AddNumbers
  175.    @firstNumber smallint,
  176.    @secondNumber smallint,
  177.    @result int OUTPUT
  178. AS
  179.    SET @result = @firstNumber + @secondNumber
  180. GO
  181.  
  182. DECLARE @answer smallint
  183. EXECUTE usp_AddNumbers 5, 6, @answer OUTPUT
  184. SELECT 'The result is: ', @answer
  185.  
  186. ---------------------------------------------------------------------
  187.  
  188. CREATE PROC usp_NewEmployee(
  189.   @firstName nvarchar(50), @lastName nvarchar(50),
  190.   @jobTitle nvarchar(50), @deptId int, @salary money)
  191. AS
  192.   INSERT INTO Employees(FirstName, LastName,
  193.     JobTitle, DepartmentID, HireDate, Salary)
  194.   VALUES (@firstName, @lastName, @jobTitle, @deptId,
  195.     GETDATE(), @salary)
  196.   RETURN SCOPE_IDENTITY()
  197. GO
  198.  
  199. DECLARE @newEmployeeId int
  200. EXEC @newEmployeeId = usp_NewEmployee
  201.   @firstName='Steve', @lastName='Jobs', @jobTitle='Trainee',
  202.   @deptId=1, @salary=7500
  203.  
  204. SELECT EmployeeID, FirstName, LastName
  205. FROM Employees
  206. WHERE EmployeeId = @newEmployeeId
  207.  
  208. ---------------------------------------------------------------------
  209.  
  210. CREATE TRIGGER tr_TownsUpdate ON Towns FOR UPDATE
  211. AS
  212.   IF (EXISTS(SELECT * FROM inserted WHERE Name IS NULL) OR
  213.       EXISTS(SELECT * FROM inserted WHERE LEN(Name) = 0))
  214.     BEGIN
  215.       RAISERROR('Town name cannot be empty.', 16, 1)
  216.       ROLLBACK TRAN
  217.       RETURN
  218.     END
  219. GO
  220.  
  221. UPDATE Towns SET Name='Sofia' WHERE TownId=1
  222.  
  223. UPDATE Towns SET Name='' WHERE TownId=1
  224.  
  225. UPDATE Towns SET Name=''
  226.  
  227. UPDATE Towns SET Name=NULL
  228.  
  229. ---------------------------------------------------------------------
  230.  
  231. CREATE TABLE Accounts(
  232.   Username varchar(10) NOT NULL PRIMARY KEY,
  233.   [Password] varchar(20) NOT NULL,
  234.   Active CHAR NOT NULL DEFAULT 'Y' )
  235. GO
  236.  
  237. CREATE VIEW V_Active_Accounts AS
  238.   SELECT * FROM Accounts WHERE Active = 'Y'
  239. GO  
  240.  
  241. CREATE TRIGGER tr_AccountsDelete ON Accounts
  242.   INSTEAD OF DELETE
  243. AS
  244.   UPDATE a SET Active = 'N'
  245.   FROM Accounts a JOIN DELETED d
  246.     ON d.Username = a.Username
  247.   WHERE a.Active = 'Y'  
  248. GO
  249.  
  250. INSERT INTO Accounts(Username, Password)
  251. VALUES ('pesho', 'qwerty123')
  252.  
  253. INSERT INTO Accounts(Username, Password)
  254. VALUES ('kiro', 'secret!')
  255.  
  256. SELECT * FROM V_Active_Accounts
  257.  
  258. DELETE FROM Accounts WHERE Username='kiro'
  259.  
  260. SELECT * FROM V_Active_Accounts
  261.  
  262. SELECT * FROM Accounts
  263.  
  264. ---------------------------------------------------------------------
  265.  
  266. CREATE FUNCTION ufn_CalcBonus(@salary money)
  267.   RETURNS money
  268. AS
  269. BEGIN
  270.   IF (@salary < 10000)
  271.     RETURN 1000
  272.   ELSE IF (@salary BETWEEN 10000 and 30000)
  273.     RETURN @salary / 20
  274.   RETURN 3500
  275. END
  276. GO
  277.  
  278. SELECT Salary, dbo.ufn_CalcBonus(Salary) as Bonus
  279. FROM Employees
  280.  
  281. ---------------------------------------------------------------------
  282.  
  283. USE Northwind
  284. GO
  285.  
  286. CREATE FUNCTION fn_CustomerNamesInRegion
  287.   ( @regionParameter nvarchar(30) )
  288. RETURNS TABLE
  289. AS
  290. RETURN (
  291.   SELECT CustomerID, CompanyName
  292.   FROM Northwind.dbo.Customers
  293.   WHERE Region = @regionParameter
  294. )
  295. GO
  296.  
  297. SELECT * FROM fn_CustomerNamesInRegion(N'WA')
  298.  
  299. ---------------------------------------------------------------------
  300.  
  301. CREATE FUNCTION fn_ListEmployees(@format nvarchar(5))
  302. RETURNS @tbl_Employees TABLE
  303.   (EmployeeID int PRIMARY KEY NOT NULL,
  304.   [Employee Name] Nvarchar(61) NOT NULL)
  305. AS
  306. BEGIN
  307.   IF @format = 'short'
  308.     INSERT @tbl_Employees
  309.     SELECT EmployeeID, LastName FROM Employees
  310.   ELSE IF @format = 'long'
  311.     INSERT @tbl_Employees SELECT EmployeeID,
  312.     (FirstName + ' ' + LastName) FROM Employees
  313.   RETURN
  314. END
  315. GO
  316.  
  317. SELECT * FROM fn_ListEmployees('short')
  318.  
  319. SELECT * FROM fn_ListEmployees('long')
  320.  
  321. ---------------------------------------------------------------------
  322.  
  323. DECLARE empCursor CURSOR READ_ONLY FOR
  324.   SELECT FirstName, LastName FROM Employees
  325.  
  326. OPEN empCursor
  327. DECLARE @firstName char(50), @lastName char(50)
  328. FETCH NEXT FROM empCursor INTO @firstName, @lastName
  329.  
  330. WHILE @@FETCH_STATUS = 0
  331.   BEGIN
  332.     PRINT @firstName + ' ' + @lastName
  333.     FETCH NEXT FROM empCursor
  334.     INTO @firstName, @lastName
  335.   END
  336.  
  337. CLOSE empCursor
  338. DEALLOCATE empCursor
Advertisement
Add Comment
Please, Sign In to add comment