Esmu izveidojis šādu saglabāto procedūru:
Create Procedure sp_ADD_USER_EXTRANET_CLIENT_INDEX_PHY
(
@ParLngId int output
)
as
Begin
SET @ParLngId = (Select top 1 ParLngId from T_Param where ParStrNom = 'Extranet Client')
if(@ParLngId = 0)
begin
Insert Into T_Param values ('PHY', 'Extranet Client', Null, Null, 'T', 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL)
SET @ParLngId = @@IDENTITY
End
Return @ParLngId
End
Tātad es iestatu mainīgo @ParLngId
, pārbaudu, vai tabulā ir šādi dati, ja jā, tad atgriežu vērtību, ja nav, tad ievietoju un atgriežu mainīgo, kas satur ievietotās rindas Id... Bet tagad man tiek parādīts SqlException:
Subquery returned more values. Tas nav atļauts, ja pēcaptauja seko =,! =, <, <=,>,>,> = Vai ja to izmanto kā izteiksmi.
Vai kādam ir risinājums?
Izmēģiniet šo -
CREATE PROCEDURE sp_ADD_USER_EXTRANET_CLIENT_INDEX_PHY
AS
BEGIN
DECLARE @ParLngId INT
SELECT TOP 1 @ParLngId = ParLngId
FROM dbo.T_Param
WHERE ParStrNom = 'Extranet Client'
IF (@ParLngId = 0)
BEGIN
INSERT INTO dbo.T_Param
VALUES ('PHY', 'Extranet Client', NULL, NULL, 'T', 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL)
RETURN SCOPE_IDENTITY()
END
ELSE BEGIN
RETURN @ParLngId
END
END
Jums nav jābūt RETURN stamentam.
Skatiet vēl vienu tēmu Lietojot saglabātās procedūras ar izejas parametriem.
Vēlreiz aplūkojiet arī sadaļu OUT CREATE PROCEDURE .