Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQLServer2005中使用存储过程时格式化sql查询中的字符串_Sql_Sql Server 2005 - Fatal编程技术网

在SQLServer2005中使用存储过程时格式化sql查询中的字符串

在SQLServer2005中使用存储过程时格式化sql查询中的字符串,sql,sql-server-2005,Sql,Sql Server 2005,我的存储过程中有一个查询: IF @backup = 0 BEGIN SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK="'+@file+'"'; END @文件是nvarchar(MAX)和备份是int 如果执行以下存储过程: DECLARE @return_value int EXEC @return_value = [dbo].[usp_cp_backup_restore_db] @ba

我的存储过程中有一个查询:

IF @backup = 0
    BEGIN
       SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK="'+@file+'"';
    END
@文件
nvarchar(MAX)
备份
int

如果执行以下存储过程:

DECLARE @return_value int

EXEC    @return_value = [dbo].[usp_cp_backup_restore_db]
        @backup = 0,
        @file = N'C:\backupFiles\MyDatabase.bak'
但结果是:
BACKUP DATABASE ContentPlatform TO DISK=“C:\backupFiles\MyDatabase.bak”

我想显示
BACKUP DATABASE ContentPlatform to DISK='C:\backupFiles\MyDatabase.bak'
因为正确的格式是

BACKUP
DATABASE MyDatabase TO
DISK='C:\MyDatabase.bak'
相应地

有什么建议吗

谢谢

不要在初始字符串中使用
,而是使用
'
。SQL知道,如果将两个
'
放在一起,您的意思是
'
出现在字符串中(而不是结束一个字符串并开始另一个字符串)

当然,它看起来很奇怪,但很有效。

在初始字符串中使用
,而不是使用
。SQL知道,如果将两个
'
放在一起,则表示
'
出现在字符串中(而不是结束一个字符串然后开始另一个字符串)

SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK='''+@file+''''

当然,它看起来很奇怪,但它可以工作。

然后将变成
备份数据库ContentPlatform TO DISK=@file
这是错误的。您不能将
'
放在仅包含
'
的字符串中。这将终止字符串。您需要
'
(对于字符串中所需的每个
'
),然后将变成
将数据库ContentPlatform备份到磁盘=@file
,这是错误的。您不能将
'
放在仅包含
'
的字符串中。这将终止字符串。您需要使用
'
(对于字符串中所需的每个
'
)。
SELECT sql = 'BACKUP DATABASE MyDatabase TO DISK='''+@file+''''