Bir tabloyu döndüren bir işlevden birden fazla satırı nasıl ekleyebilirim? Yardımlarınız için teşekkürlerTablo döndüren bir işlevden birden çok değer ekleme - SQL SERVER
Bu kodu çalışıyorum ama
Bir tabloyu döndüren bir işlevden birden fazla satırı nasıl ekleyebilirim? Yardımlarınız için teşekkürlerTablo döndüren bir işlevden birden çok değer ekleme - SQL SERVER
Bu kodu çalışıyorum ama
İlk bakışta belirsiz olduğunu da bir hata gösteriliyor -
INSERT INTO [a01].[tbl_notificationsInbox]
(notificationID, notificationMessage, notificationDate, accountID, typeId)
SELECT NEWID(), @FrA+' has become friends with '[email protected], SYSDATETIMEOFFSET(), accountID, 2
from [a01].[udf_getAddedFriendContacts](@FriendA, @FriendB)
ama [a01].[udf_getAddedFriendContacts]
gerçekleşme bağlıdır
Yapamazsın Bir fonksiyon içerisinde herhangi bir yan etkiye sahip olmak. Örneğinizde, INSERT
örneğinizde kalıcı bir tabloya dönün ve NEWID
(), yan etkilere sahip olarak kabul edilir (INSERT
'u anlıyorum, ancak NEWID
() benim için normal bir işlev gibi görünüyor). bir fonksiyonu içerisinde bir yan etki operatörü 'newid' arasında
kullanımı geçersiz:
Hata mesajı aşağıdaki gibidir.
İşleviniz aşağıdaki gibi görünmelidir:
alter function dbo.testGuidReturn
(
@UID UNIQUEIDENTIFIER
)
RETURNS @Ret TABLE
(
notificationID UNIQUEIDENTIFIER,
notificationMessage NVARCHAR(100),
notificationDate DATETIME2,
accountID int,
typeId INT
)
AS
BEGIN
INSERT INTO @Ret
VALUES (@UID, 'Some message', GETDATE(), 10, 20)
RETURN
END
GO
-- example call
SELECT * FROM dbo.testGuidReturn(NEWID())
Ayrıca ihbar olduğu GETDATE
kabul edilir, bu deterministik olmamasına rağmen. Nedeniyle akıllı hile için
[DÜZENLE]
here gösterilen fonksiyon kolaylaştırılabilir:
create view vwGetNewId as select newid() as New_Id
GO
alter function dbo.testGuidReturn()
RETURNS @Ret TABLE
(
notificationID UNIQUEIDENTIFIER,
notificationMessage NVARCHAR(100),
notificationDate DATETIME2,
accountID int,
typeId INT
)
AS
BEGIN
INSERT INTO @Ret
SELECT New_Id, 'Some message', GETDATE(), 10, 20
FROM vwGetNewId
RETURN
END
GO
, ekleyiniz: NEWID (get) ve seçiminiz için kullanmak için bir görünüm oluşturmak '[a01]. [udf_getAddedFriendContacts]' fonksiyon tanımınız veya alınan hatanın yanı sıra fonksiyon tanımı veya en azından geri dönüş tipi. – Alexei
[a01] 'i görmek için düzenlenmiştir. [Udf_get AddedFriendContacts] – BakingCake
tuhaf bir işlevdir. Sanırım sizden [.1]. [Tbl_blockedAccounts] 'a katılmanız gerekmiyor, çünkü herhangi bir alanı kullanmıyorsunuz. Bunu yazmayı ne demek istediğini söyleyebilir misin? – DimaSUN