繁体   English   中英

SSIS传递变量以执行sql任务(创建表参数)

[英]SSIS passing a variable to execute sql task (create table parameter)

我有一个包含两个执行sql任务以及大量DFT的程序包。 第一个有以下语句:

select CAST(floor(rand()*1000)+1 AS INT) AS SeqVar

并具有ResultSet单行-完美的作品。 它给我一个1到1000之间的随机数,并将该值传递给我称为SeqVar的变量。 (我也已验证这可行)

我遇到的问题是在我的第二个执行SQL任务中,在其中尝试并使用从第一个执行SQL脚本输出的SeqVar变量作为以下语句中的参数:

IF OBJECT_ID('tempdb.dbo.[##temp1]') IS NOT NULL
DROP TABLE [##temp1]

CREATE TABLE [##temp1] (
[RecID] int IDENTITY(?,1),
[Name] VARCHAR(30),
[ABA] VARCHAR(10),
[Account] VARCHAR(20),  
[Type] VARCHAR(1),
[Date] date,
[Amount] money   
);

在参数映射下,我具有SeqVar变量名称,“方向”为“输入”,“数据类型”为数字,参数名称为0,参数大小为1000。

我获得的价值必须去我拥有“?”的地方。 在创建tempdb语句中。 我正在尝试让我的代码从随机数开始并以1递增。

我知道使用脚本任务可能会更容易,但是在我的处理中该工具已损坏(奇怪的DTS管道错误)。 预先感谢,这一切都在SSIS 2008中。

仅以某个随机值开始序列,以这种方式使用身份似乎是一个奇怪的解决方案。 参数格式为? 绝对不能在这种情况下在SQL中工作。

但是,管理此方法的另一种方法(如果已给定方法)是使用表达式设置SQL任务的整个代码,在该表达式中,您可以将值作为简单的字符串串联而包含在其中,然后运行结果字符串。

最好像下面这样创建表,然后使用RESEED属性将其设置为您的“随机变量值”

IF OBJECT_ID('tempdb.dbo.[##temp1]') IS NOT NULL
DROP TABLE [##temp1]

    CREATE TABLE [##temp1] (
    [RecID] int IDENTITY(1,1),
    [Name] VARCHAR(30),
    [ABA] VARCHAR(10),
    [Account] VARCHAR(20),  
    [Type] VARCHAR(1),
    [Date] date,
    [Amount] money   
    );

    DECLARE @RANDOM_VALUE INT = 50
    DBCC CHECKIDENT('##TEMP1',RESEED,@RANDOM_VALUE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM