我有问题;我写了一个SQL触发器,我收到一个错误,即:
Msg 257,Level 16,State 3,Procedure stok_yedek,Line 75
不允许从数据类型datetime到int的隐式转换。使用 CONVERT函数用于运行此查询。
这是我的代码:
ALTER trigger stok_yedek on dbo.[Instance - Stok (1851)] for insert
as begin
declare @ParentInstance int
declare @ParentTemplateConfigurationItem int
declare @ParentConfigurationItem int
declare @BaseInstance int
declare @SortOrder int
declare @DateCreated datetime
declare @DateModified datetime
declare @ModifiedBy int
declare @RecycleBin tinyint
declare @Archived tinyint
declare @OriginalInstance int
declare @Stok_Adi nchar(100)
declare @Stok_Grup_Kodu int
declare @Mevcut_Miktar float
declare @Model_No nchar(100)
declare @Grubu int
declare @Ilgili int
declare @Marka nchar(100)
declare @Alt_Grubu int
declare @Logo_Stok_Kodu nchar(100)
declare @Depo_Mevcutu float
declare @Antrepo_Mevcutu float
declare @Birim int
declare @New_Drop_Down nvarchar(128)
declare @Masraf_Merkezi_Kodu float
declare @Masraf_Merkezi_Kodu2 nchar(100)
declare @Tipi nchar(100)
declare @Sogutma_Kapasitesi float
declare @Marka_Ozel_Kodu int
declare @Ozel_Kod nchar(100)
declare @Ozel_Kod2 nchar(100)
declare @Durumu nvarchar(128)
declare @Uretici nchar(100)
declare @Aciklama2 nchar(100)
select @ParentInstance=inserted.ParentInstance
from inserted
SELECT @ParentTemplateConfigurationItem=inserted.ParentTemplateConfigurationItem
FROM inserted
SELECT @ParentConfigurationItem=ParentConfigurationItem
FROM inserted
SELECT @BaseInstance=BaseInstance FROM inserted
SELECT @SortOrder=SortOrder from inserted
select @DateCreated=DateCreated from inserted
select @DateModified=DateModified from inserted
SELECT @ModifiedBy=ModifiedBy FROM inserted
SELECT @RecycleBin=RecycleBin FROM inserted
select @Archived=Archived FROM inserted
SELECT @OriginalInstance=OriginalInstance FROM inserted
SELECT @Stok_Adi= [Stok Adı (1852)]FROM inserted
SELECT @Stok_Grup_Kodu=[Stok Grup Kodu (1993)] FROM inserted
SELECT @Mevcut_Miktar=[Mevcut Miktar (1999)] FROM inserted
select @Model_No=[Model No (2001)]FROM inserted
SELECT @Grubu=[Grubu (Özel Kod2) (2002)] from inserted
select @Ilgili=[İlgili Şirket (2035)] from inserted
select @Marka=[Markası (2036)] from inserted
select @Alt_Grubu=[Alt Grubu (Özel Kod3) (2397)] from inserted
select @Logo_Stok_Kodu=[Logo Stok Kodu (2398)] from inserted
select @Depo_Mevcutu=[Depo Mevcutu (2487)] from inserted
select @Antrepo_Mevcutu=[Antrepo Mevcutu (2488)]from inserted
select @Birim=[Birim (2000)]from inserted
select @New_Drop_Down=[New Drop Down (3931)]from inserted
select @Masraf_Merkezi_Kodu=[Masraf Merkezi Kodu (3932)]from inserted
select @Masraf_Merkezi_Kodu2=[Masraf Merkezi Kodu (3933)]from inserted
select @Tipi=[Tipi (3934)] from inserted
select @Sogutma_Kapasitesi=[Soğutma Kapasitesi (3935)] from inserted
select @Marka_Ozel_Kodu=inserted.[Marka (Özel Kodu) (4046)] from inserted
select @Ozel_Kod=[Özel Kod4 (4053)] from inserted
select @Ozel_Kod2=[Özel Kod5 (4054)]from inserted
select @Durumu=[Durumu (4247)] from inserted
select @Uretici=[Üretici Kodu (4302)] from inserted
select @Aciklama2=[Açıklama-2 (4303)] from inserted
INSERT INTO [EGITIM_01].dbo.[Instance - Stok (1851)]
([ParentInstance]
,[ParentTemplateConfigurationItem]
,[ParentConfigurationItem]
,[BaseInstance]
,[SortOrder]
,[DateCreated]
,[DateModified]
,[ModifiedBy]
,[RecycleBin]
,[Archived]
,[OriginalInstance]
,[Stok Adı (1852)]
,[Stok Grup Kodu (1993)]
,[Mevcut Miktar (1999)]
,[Model No (2001)]
,[Grubu (Özel Kod2) (2002)]
,[İlgili Şirket (2035)]
,[Markası (2036)]
,[Alt Grubu (Özel Kod3) (2397)]
,[Logo Stok Kodu (2398)]
,[Depo Mevcutu (2487)]
,[Antrepo Mevcutu (2488)]
,[Birim (2000)]
,[New Drop Down (3931)]
,[Masraf Merkezi Kodu (3932)]
,[Masraf Merkezi Kodu (3933)]
,[Tipi (3934)]
,[Soğutma Kapasitesi (3935)]
,[Marka (Özel Kodu) (4046)]
,[Özel Kod4 (4053)]
,[Özel Kod5 (4054)]
,[Durumu (4247)]
,[Üretici Kodu (4302)]
,[Açıklama-2 (4303)])
VALUES
(@ParentInstance,@ParentInstance,@ParentTemplateConfigurationItem
,@ParentConfigurationItem,@BaseInstance,@SortOrder,@DateCreated
,@DateModified,@ModifiedBy,@RecycleBin,@OriginalInstance,@Stok_Adi,
@Stok_Grup_Kodu,@Mevcut_Miktar,@Model_No,@Grubu,@Ilgili,
@Marka,@Alt_Grubu,@Logo_Stok_Kodu,@Depo_Mevcutu,@Antrepo_Mevcutu,
@Birim,@New_Drop_Down,@Masraf_Merkezi_Kodu,@Masraf_Merkezi_Kodu2,@Tipi
,@Sogutma_Kapasitesi,@Marka,@Ozel_Kod,@Ozel_Kod2,@Durumu,@Uretici
,@Aciklama2
)
if @@TRANCOUNT > 0
BEGIN
COMMIT TRANSACTION InProc;
-- There is no BEGIN TRAN statement after this statement. However there is no error 266 either.
PRINT 'In proc commit: ' + CAST(@@TRANCOUNT as char(1));
END
else
print @@error
end
INSERT INTO [Ramazan_Test].[dbo].[stok_yedek]
([ParentInstance]
,[ParentTemplateConfigurationItem]
,[ParentConfigurationItem]
,[BaseInstance]
,[SortOrder]
,[DateCreated]
,[DateModified]
,[ModifiedBy]
,[RecycleBin]
,[Archived]
,[OriginalInstance]
,[Stok_Adi]
,[Stok Grup Kodu (1993)]
,[Mevcut Miktar (1999)]
,[Model No (2001)]
,[Grubu (Özel Kod2) (2002)]
,[İlgili Şirket (2035)]
,[Markası (2036)]
,[Alt Grubu (Özel Kod3) (2397)]
,[Logo Stok Kodu (2398)]
,[Depo Mevcutu (2487)]
,[Antrepo Mevcutu (2488)]
,[Birim (2000)]
,[New Drop Down (3931)]
,[Masraf Merkezi Kodu (3932)]
,[Masraf Merkezi Kodu (3933)]
,[Tipi (3934)]
,[Soğutma Kapasitesi (3935)]
,[Marka (Özel Kodu) (4046)]
,[Özel Kod4 (4053)]
,[Özel Kod5 (4054)]
,[Durumu (4247)]
,[Üretici Kodu (4302)]
,[Açıklama-2 (4303)])
VALUES
(@ParentInstance,@ParentInstance,@ParentTemplateConfigurationItem
,@ParentConfigurationItem,@BaseInstance,@SortOrder,@DateCreated
,@DateModified,@ModifiedBy,@RecycleBin,@OriginalInstance,@Stok_Adi,
@Stok_Grup_Kodu,@Mevcut_Miktar,@Model_No,@Grubu,@Ilgili,
@Marka,@Alt_Grubu,@Logo_Stok_Kodu,@Depo_Mevcutu,@Antrepo_Mevcutu,
@Birim,@New_Drop_Down,@Masraf_Merkezi_Kodu,@Masraf_Merkezi_Kodu2,@Tipi
,@Sogutma_Kapasitesi,@Marka,@Ozel_Kod,@Ozel_Kod2,@Durumu,@Uretici
,@Aciklama2
)
你能帮我吗?
答案 0 :(得分:0)
将datetime
个变量值转换为INT
,然后转换为INSERT
。
e.g:
DECLARE @DateCreated datetime='2015-06-2 11:59:59'
SELECT CAST(CONVERT(varchar(20),@DateCreated,112) as INT)
插入@DateCreated
时,请参阅上述代码,您可以使用@DateModified
:
CAST(CONVERT(varchar(20),@DateCreated,112) as INT),
CAST(CONVERT(varchar(20),@DateModified ,112) as INT)
答案 1 :(得分:0)
我为你的代码做了一些清理工作。通过保持代码简单和干净,您可以在将来避免一些不必要的麻烦:
template.deleteRelationshipBetween(Object start, Object end, String type)