SQL Server 2005: początkujący programista T-SQL ma problem
RAM - 11-05-2007 12:31
SQL Server 2005: początkujący programista T-SQL ma problem
Dzień dobry, Uczę się T-SQL i podczas pisania triggera (dodawanie pozycji PZ w systemie magazynowym) mam taki błąd:
Msg 4145, Level 15, State 1, Procedure InsteadOfInsertPozycjePrzyjęć, Line 27 An expression of non-boolean type specified in a context where a condition is expected, near 'RAISERROR'.
Oto mój kod:
SET ANSI_NULLS ON; GO SET QUOTED_IDENTIFIER ON; GO CREATE TRIGGER InsteadOfInsertPozycjePrzyjęć ON PozycjePrzyjęć INSTEAD OF INSERT AS BEGIN SET NOCOUNT ON; DECLARE Przyjmowane CURSOR FORWARD_ONLY READ_ONLY FOR SELECT i.Materiał, ms.Skład, s.ZablokujOperacje, i.Ilość, ms.Ilość, ms.StanMaksymalny FROM inserted AS i INNER JOIN Dokumenty AS d ON i.Dokument = d.Numer INNER JOIN Materiały AS m ON i.Materiał = m.Id INNER JOIN Składy AS s ON d.SkładPrzyjmujący = s.Id INNER JOIN MateriałyWSkładach AS ms ON i.Materiał = ms.Materiał AND d.SkładPrzyjmujący = ms.Skład; DECLARE @Materiał DECIMAL(10, 0); DECLARE @Skład VARCHAR(10); DECLARE @ZablokujOperacje BIT; DECLARE @Ilość DECIMAL(8, 3); DECLARE @IlośćNaSkładzie DECIMAL(8, 3); DECLARE @StanMaksymalny DECIMAL(8, 3); OPEN Przyjmowane; FETCH FIRST FROM Przyjmowane INTO @Materiał, @Skład, @ZablokujOperacje, @Ilość, @IlośćNaSkładzie, @StanMaksymalny; WHILE @@FETCH_STATUS = 0 BEGIN -- Sprawdzenie blokady operacji na składzie: IF @ZablokujOperacje RAISERROR (N'Zablokowano operacje na składzie %s!', 16, 1, @Skład); -- Sprawdzenie stanu maksymalnego: IF @IlośćNaSkładzie + @Ilość > @StanMaksymalny RAISERROR (N'Przykroczono stan maksymalny (%f) materiału %s na składzie %s!', 16, 1, @StanMaksymalny, @Materiał, @Skład); ... FETCH NEXT FROM Przyjmowane INTO @Materiał, @Skład, @ZablokujOperacje, @Ilość, @IlośćNaSkładzie, @StanMaksymalny; END; CLOSE Przyjmowane; DEALLOCATE Przyjmowane; END; GO
Nie rozumiem tego błędu i nie wiem właściwie w którym wierszu jest błąd, bo "Line 27" to w moim Express Edition to WHILE @@FETCH_STATUS = 0 Może kompilator nie liczy wierszy SET ANSI_NULLS ON; SET QUOTED_IDENTIFIER ON; i chodzi o wiersz: IF @ZablokujOperacje RAISERROR (N'Zablokowano operacje na składzie %s!', 16, 1, @Skład); ale nie wiem co to jest źle... Pomożecie? Dziękuję bardzo. /RAM/
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Robert Winkler - 11-05-2007 12:31
Spróbuj napisać:
IF (@ZablokujOperacje = CAST(1 AS BIT)) RAISERROR (N'Zablokowano operacje na składzie %s!', 16, 1, @Skład);
Wydaje sie że dla T-SQL'a zmienna BIT nie jest tożsama z wartoscią typu boolean.
-- ____________ Robert Winkler
RAM - 11-05-2007 12:31
Dziękuję bardzo, pomogło.
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
zanotowane.pldoc.pisz.plpdf.pisz.plptsite.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|