Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Хранимые процедуры

.txt
Скачиваний:
16
Добавлен:
15.06.2014
Размер:
1.79 Кб
Скачать
//Расчет зарплаты
По всем teacher_code сделай расчет зарплаты (часы * оплату в час (в зависимости от вида занятий))

CREATE PROCEDURE [dbo].[salary1]
@Last_name nvarchar(50)


AS

DECLARE @mytable TABLE(salary1 INT,salary2 INT)
INSERT @mytable
SELECT SUM(teaching_load.hours*form_of_class.pay_per_hour) AS salary, form_of_class.form_code
FROM teachers, teaching_load,form_of_class
WHERE teachers.last_name=@Last_name AND teachers.teacher_code=teaching_load.teacher_code AND form_of_class.form_code=teaching_load.form_code
GROUP BY teachers.last_name,teaching_load.hours, form_of_class.form_code, form_of_class.pay_per_hour
SELECT SUM(salary1), SUM(salary1) FROM @mytable


EXECUTE salary 'Шарапова'

//Курсор



DECLARE @message VARCHAR(80),
@nam VARCHAR(50),
@p INT,
@s INT,
@count INT
SET @s=0
SET @count=0

DECLARE tovar_cursor CURSOR FOR
SELECT teachers.last_name,teaching_load.hours*form_of_class.pay_per_hour AS
Стоимость
FROM teachers, form_of_class INNER JOIN teaching_load ON form_of_class.form_code=teaching_load.form_code

WHERE teaching_load.teacher_code=teachers.teacher_code AND teaching_load.form_code=2

OPEN tovar_cursor
FETCH NEXT FROM tovar_cursor
INTO @nam, @p
IF @@FETCH_STATUS<>0
PRINT ' Нет покупок'
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @message=' '+@nam+' '+
CAST(@p AS CHAR(6))
PRINT @message
SET @s=@s+@p
SET @count=@count+1
FETCH NEXT FROM tovar_cursor
INTO @nam, @p
END
CLOSE tovar_cursor
DEALLOCATE tovar_cursor

SELECT @message='Средняя стоимость '+
CAST((@s/@count) AS CHAR(6))
PRINT @message