MS SQL syntax SET vs. SELECT



我正在尝试执行以下SQL查询(部分代码):

DECLARE @name VARCHAR(50)       -- database name  
DECLARE @path VARCHAR(256)      -- path for backup files  
DECLARE @fileName VARCHAR(256)  -- filename for backup  
DECLARE @fileDate VARCHAR(20)   -- used for file name 
SET @path = 'C:Backup'
SET @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM MASTER.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')

我的问题:

  1. 为什么@path使用SET,而@fileDate使用SELECT
  2. 为什么@fileDateSET不一样

因为它是一个备份查询

SET@path='C:\Backup\'-这意味着我们在静态路径上进行备份

SELECT@fileDate=CONVERT(VARCHAR(20),GETDATE(),112

例如,如果每天执行一次备份。

则它可以在静态路径(@path)上提供备份,并使用命名约定提供备份,例如____bkup_20160519.bak

这里20160519是@filedate,它将每天更改

如果你需要更多关于它的想法,请告诉我。

在您的示例中,Set或Select是相同的。Select用于选择多个变量的值,如所示

这适用于

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) ,@path = 'C:Backup'

但是不起作用

set @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) ,@path = 'C:Backup'

在你的情况下,我看不出有什么原因。如果我想一次设置多个值,我会使用"选择"而不是"集"。

DECLARE @name VARCHAR(50) -- database name  
DECLARE @path VARCHAR(256) -- path for backup files  
DECLARE @fileName VARCHAR(256) -- filename for backup  
DECLARE @fileDate VARCHAR(20) -- used for file name 
--SET @path = 'C:Backup'  
Select  @path = 'C:Backup' , @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
Select @Path, @FileDate

最新更新