TSQL使用变量重新连接字符串文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TSQL使用变量重新连接字符串文本相关的知识,希望对你有一定的参考价值。
我试图将下面代码的第三行(Set @ProjectBinary)中的文件夹位置替换为变量。
原始代码:
DECLARE @ProjectBinary as varbinary(max)
DECLARE @operation_id as bigint
Set @ProjectBinary = (SELECT * FROM OPENROWSET(BULK 'C:MyProjects SSISPackage_ProjectDeployment.ispac', SINGLE_BLOB) as BinaryData)
Exec catalog.deploy_project @folder_name = 'SSIS Packages', @project_name = 'DeployViaStoredProc_SSIS', @Project_Stream = @ProjectBinary, @operation_id = @operation_id out
我创建了一个变量:DECLARE @Location AS varchar(250)='C: SSIS DWH_IS.ispac'
DECLARE @ProjectBinary as varbinary(max)
DECLARE @operation_id as bigint
Set @ProjectBinary = ('SELECT * FROM OPENROWSET(BULK ' + @Location + ', SINGLE_BLOB') as BinaryData)
Exec catalog.deploy_project @folder_name = 'SSIS Packages', @project_name = 'DeployViaStoredProc_SSIS', @Project_Stream = @ProjectBinary, @operation_id = @operation_id out
我一直收到错误:消息257,级别16,状态3,行61不允许从数据类型varchar到varbinary(max)的隐式转换。使用CONVERT函数运行此查询。
有关如何更改此代码以获取代码运行的任何建议吗?
答案
您需要按如下方式细分
DECLARE @SQL nvarchar(1000), @ProjectBinary as varbinary(max);
SET @SQL = N'SELECT @Blob = (SELECT * FROM OPENROWSET(BULK ''' + @Location + ''', SINGLE_BLOB) as BinaryData)'
EXEC sp_executesql @SQL, N'@Blob varbinary(max) OUTPUT', @ProjectBinary OUTPUT;
线Set @ProjectBinary = (..
不能动态或参数化
以上是关于TSQL使用变量重新连接字符串文本的主要内容,如果未能解决你的问题,请参考以下文章