Michał Rodzynek Student, UAM
Temat: Mój pierwszy projekt - pomożecie?
Witam,Jestem właśnie w trakcie robienia projektu z BD w środowisku SQL Server Management.
Ogólnie robię bazę (zbiór albumów muzycznych) i do tego tabelę z pożyczonymi albumami (płytami) swoim znajomym.
Ogólnie jakoś idę do przodu jednak mam problem z procedurą:
create procedure dodaj_wypozyczenie
@tyt STRING,
@id_alb int,
@id_osob int,
@data_temp varchar
--@data_wyp date
AS
begin
declare @data_wyp date
select @id_alb = (select id_albumu from album where tytul = @tyt)
select @data_wyp = (cast(@data_temp as date))
insert into wypozyczenia (id_alb, id_os, data_wypozyczenia) values (@id_alb, @id_osob, @data_wyp)
end
go
--drop procedure dodaj_wypozyczenie
execute dodaj_wypozyczenie 'LB',5,'2011-09-22'
-----------
Ogólnie INSERT wygląda tak:
INSERT INTO wypozyczenia (id_alb, id_os, data_wypozyczenia) VALUES (2, 1, '2011-09-22')
jednak do tego musiałbym poszukać i wpisać odpowiednie id_albumu. Aby to ułatwić chciałem posłużyć się nazwą albumu.
Procedura kompiluje się (o ile tak to można nazwać), natomiast nie chcę się wykonać. Otrzymuje taki błąd:
Msg 8114, Level 16, State 5, Procedure dodaj_wypozyczenie, Line 0
Error converting data type varchar to int.
Niby wiem co on oznacza, ale nie wiem dlaczego tak jest. Jak poprawie podać datę?
Dla przykładu podam jeszcze procedurę, która jest bardzo podobna (na jej podstawie robiłem powyższą procedurę) i która działa poprawnie:
-- Procedura, która ułatwia dodawanie zespołów.
create procedure dodaj_zespol
@nazwa STRING,
@rok int,
@id_artysty01 int,
@id_artysty02 int = null,
@id_artysty03 int = null,
@id_artysty04 int = null
AS
begin
insert into zespol (nazwa, rok_zal) values (@nazwa, @rok)
declare @id_zesp int
select @id_zesp = (select id_zespolu from zespol where nazwa like @nazwa)
if (@rok < year(CURRENT_TIMESTAMP))
begin
insert into wykonawca values (@id_zesp, @id_artysty01)
if @id_artysty02 is null return
insert into wykonawca values (@id_zesp, @id_artysty02)
if @id_artysty03 is null return
insert into wykonawca values (@id_zesp, @id_artysty03)
if @id_artysty04 is null return
insert into wykonawca values (@id_zesp, @id_artysty04)
end
else
begin
return
end
end
go
drop procedure dodaj_zespol
--execute dodaj_zespol 'nowy2', 2012, 2