[英]MS SQL syntax SET vs. SELECT
I'm trying to follow the following SQL Query (Partial code): 我正在尝试遵循以下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')
My questions: 我的问题:
@path
using SET
, while @fileDate
using SELECT
? @path
使用SET
,而@fileDate
使用SELECT
? @fileDate
SET
as well? @fileDate
也没有SET
? Since its a backup query 由于它是备份查询
SET @path = 'C:\\Backup\\' --- It means we are taking backup on a static path SET @path ='C:\\ Backup \\'---这意味着我们正在静态路径上进行备份
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) --- filedate will be dynamic due to getdate() and it may be used in the .bak file naming convention so thats why mostly we use select for @filedate SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)---由于getdate(),filedate将是动态的,并且它可能会在.bak文件命名约定中使用,因此这就是为什么我们大多将select用于@归档日期
eg if performing a backup daily once. 例如,如果每天执行一次备份。
then it may provide the backup on static path (@path) and backup with naming convention eg ____bkup_20160519.bak 那么它可能会提供静态路径(@path)上的备份以及具有命名约定的备份,例如____ bkup_20160519.bak
here 20160519 is @filedate which will change daily 这里20160519是@filedate,每天都会更改
Let me know if you need more idea regarding it. 让我知道您是否需要更多关于此的想法。
In your exmaple either Set or Select is same. 在您的实例中,“设置”或“选择”是相同的。 Select is used to selected values to more than one variable like shown below
Select用于选择多个变量的值,如下所示
This works 这有效
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) ,@path = 'C:\Backup\'
but this does not work 但这不起作用
set @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) ,@path = 'C:\Backup\'
In your case I do not see a reason. 就您而言,我看不出原因。 One reason I would use Select over Set if I want to set multiple values at once.
如果要一次设置多个值,我会使用“选择集”的原因之一。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.