webForumDet fria alternativet

problem med SP

10 svar · 596 visningar · startad av Vinnaren

VinnarenMedlem sedan sep. 2005858 inlägg
#1

Har följande:

		SET @MobileCount = (SELECT COUNT(PhoneId) FROM Phone WHERE ParentId = @ParentId AND PhoneTypeId = @MobileTypeId)

		/*finns inget mobiltelefonnummer sedan tidigare*/
		if(@MobileCount = 0)
		BEGIN
			if(@MobilePhone != null)
			BEGIN
				SET @ErrMsg = 'Fel inträffade när mobiltelefonnummret skulle sparas'
				INSERT INTO Phone(Phone, PhoneTypeId, ParentId) VALUES(@MobilePhone, @MobileTypeId, @ParentId)
			END
		END
		/*finns mobiltelefonnummer sedan tidigare*/
		ELSE
		BEGIN
			/* om mobilnummer är angivet*/
			if(@MobilePhone != null)
			BEGIN
				SET @ErrMsg = 'Fel inträffade när mobiltelefonnummret skulle uppdateras'
				UPDATE Phone SET Phone = @MobilePhone WHERE ParentId = @ParentId AND PhoneTypeId = @MobileTypeId
			END
			ELSE
			/* om mobilnummer inte är angivet och finns sedan tidigare, ta bort*/
			BEGIN
				DELETE FROM Phone WHERE ParentId = @ParentId AND PhoneTypeId = @MobileTypeId
			END
		END

Får inget felmeddelande, men kommer inte in något i tabellen. Vad kan det vara för fel? :q

ANV: MSSQL 2005

Tacksam för all hjälp :stud

Peter SMedlem sedan dec. 20025 484 inlägg
#2

Har du gjort print:s på de variabler du kontrollerar?

LarsGMedlem sedan dec. 200012 465 inlägg
#3
if (@MobilePhone != null)

är aldrig sant. Använd

if (@MobilePhone is not null)
VinnarenMedlem sedan sep. 2005858 inlägg
#4

tack, fungerade kanon :bire

VinnarenMedlem sedan sep. 2005858 inlägg
#5

nytt problem med en SP :r

Har följande:

	SELECT (c.LastName + ', ' + c.FirstName) AS Name, c.ChildId, d.Name AS DepartmentName, (isnull(s.LastName, 'Saknas') + ', ' + isnull(s.FirstName, '')) AS StaffName, (isnull(p1.LastName, 'Saknas') + ', ' + isnull(p1.FirstName, '')) AS Parent1Name, (isnull(p2.LastName, 'Saknas') + ', ' + isnull(p2.FirstName, '')) AS Parent2Name
	FROM Child AS c

	INNER JOIN Department AS d
	ON c.DepartmentId = d.DepartmentId

	LEFT OUTER JOIN Staff AS s
	ON c.StaffId = s.StaffId

	LEFT OUTER JOIN ParentToChild AS ptc1
	ON c.ChildId = ptc1.ChildId

	LEFT OUTER JOIN Parent AS p1
	ON ptc1.ParentId = p1.ParentId

	LEFT OUTER JOIN ParentToChild AS ptc2
	ON c.ChildId = ptc2.ChildId AND ptc2.ParentId != p1.ParentId

	LEFT OUTER JOIN Parent AS p2
	ON ptc2.ParentId = p2.ParentId

	WHERE c.DepartmentId = @DepartmentId
	ORDER BY c.LastName ASC, c.FirstName ASC

När den är isnull så vill jag enbart få ut Saknas, nu får jag ut Saknas,
dvs jag vill ha bort ,
Sätter jag isnull på variablen efter blir den ju aldrig null då ', '

Samt kan man lösa när @DepartmentId = 0 ska alla visas på nott enkelöt sätt eller måste man ha två frågor?

Tacksam för all hjälp

LarsGMedlem sedan dec. 200012 465 inlägg
#6
isnull(s.lastname + ',' + isnull(...),'saknas')
WHERE c.DepartmentId = @DepartmentId
or @departmentId = 0
VinnarenMedlem sedan sep. 2005858 inlägg
#7

tack, får felmeddelandet:
The isnull function requires 2 argument(s).

LarsGMedlem sedan dec. 200012 465 inlägg
#8

Hur ser din fråga ut?

VinnarenMedlem sedan sep. 2005858 inlägg
#9

Ändrade en till isnull(s.Firstname+ ',' + isnull(s.LastName),'saknas')

LarsGMedlem sedan dec. 200012 465 inlägg
#10
isnull(s.LastName)

skall vara

isnull(s.LastName,'')
VinnarenMedlem sedan sep. 2005858 inlägg
#11

gött, tack, funkar perfa :stud

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb