我正在尝试执行以下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')
我的问题:
- 为什么
@path
使用SET
,而@fileDate
使用SELECT
- 为什么
@fileDate
和SET
不一样
因为它是一个备份查询
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