我有以下声明:
DECLARE @orderGUID VARCHAR(50) = NEWID(),
@deliveryId VARCHAR(50) = NEWID(),
@orderChildGUID VARCHAR(50) = NEWID(),
@deliveryIdChild VARCHAR(50) = NEWID(),
@triggerFileName VARCHAR(50) = 'trigger_[X].txt',
@triggerTime TIME = GETDATE(),
@triggerDate DATE = GETDATE(),
@dateTimeText CHAR(17) = rfa.dbo.FormatDate(@triggerDate, 'YYYYMMDD')
+ LEFT(REPLACE(REPLACE(@triggerTime,':',''),'.',''),9);
出现以下错误: 必须声明标量变量“@triggerDate”
我试过这个并且它有效,但看起来并不好:
DECLARE @triggerTime TIME = GETDATE(),
@triggerDate DATE = GETDATE();
DECLARE @orderGUID VARCHAR(50) = NEWID(),
@deliveryId VARCHAR(50) = NEWID(),
@orderChildGUID VARCHAR(50) = NEWID(),
@deliveryIdChild VARCHAR(50) = NEWID(),
@triggerFileName VARCHAR(50) = 'trigger_[X].txt',
@dateTimeText CHAR(17) = rfa.dbo.FormatDate(@triggerDate, 'YYYYMMDD')
+ LEFT(REPLACE(REPLACE(@triggerTime,':',''),'.',''),9);
是否可以只使用一个声明来执行此操作?
答案 0 :(得分:2)
需要单独声明: -
DECLARE @triggerDate DATE = GETDATE(), @triggerTime TIME = GETDATE()
DECLARE @orderGUID VARCHAR(50) = NEWID(),
@deliveryId VARCHAR(50) = NEWID(),
@orderChildGUID VARCHAR(50) = NEWID(),
@deliveryIdChild VARCHAR(50) = NEWID(),
@triggerFileName VARCHAR(50) = 'trigger_[X].txt',
@dateTimeText CHAR(17) = rfa.dbo.FormatDate(@triggerDate, 'YYYYMMDD') + LEFT (REPLACE(REPLACE(@triggerTime,':',''),'.',''),9)
答案 1 :(得分:2)
没有
正如rbarryyoung在评论中写的那样。
顺便说一下,我倾向于选择“额外”DECLARE,特别是在开发过程中。我发现如果它们是每个人都更容易遵循被声明的内容并添加,删除或重新排序声明。这对我来说值得重复宣告。
DECLARE @triggerDate DATE = GETDATE()
DECLARE @triggerTime TIME = GETDATE()
DECLARE @orderGUID VARCHAR(50) = NEWID()
DECLARE @deliveryId VARCHAR(50) = NEWID()
DECLARE @orderChildGUID VARCHAR(50) = NEWID()
DECLARE @deliveryIdChild VARCHAR(50) = NEWID()
DECLARE @triggerFileName VARCHAR(50) = 'trigger_[X].txt'
DECLARE @dateTimeText CHAR(17) = rfa.dbo.FormatDate(@triggerDate, 'YYYYMMDD') + LEFT(REPLACE(REPLACE(@triggerTime,':',''),'.',''),9)
我不相信这两种风格之间存在任何性能差异,但有些人可能会在某些情况下显示更快的风格。那会很有趣。