zoukankan      html  css  js  c++  java
  • ssis 到别的表查找临时变量值

    etl过程过,往一个数据库表插入数据,插入的值往往需要到另外一个数据库读取。例如下面的客户跟踪,需要一个“项目ID”,这个ID需要到另一个数据库的一张表查找,找到后返回给“客户跟踪”任务流。

    image

    执行SQL任务“原项目ID”的配置如下图:
    image 
    image  

    sql语句是:

    if exists(SELECT * FROM dbo.TB_BBProject WHERE (PJ_Name = @PJ_Name))
         SELECT top 1 PJ_ID FROM dbo.TB_BBProject WHERE (PJ_Name = @PJ_Name);
    else
         select –1
    如果直接写:SELECT top 1 PJ_ID FROM dbo.TB_BBProject WHERE (PJ_Name = @PJ_Name),当这个查询没有数据返回的时候,ssis就会报道如下错误:
                无法为单行结果类型填充结果列。查询返回了一个空的结果集

    这是因为“结果集”设置成单行,ssis就要求必须返回一行,不允许空行。
    保存结果的变量“原项目ID”的数据类型需要设置成“Object”,在其他地方使用的时候,ssis会自动转成int类型,见下图:
    在“OLE DB 源数据源”中使用“原项目ID”
    image
    “OLE DB 源”需要的查询参数需要使用“select * from tableName where fieldName=?”,只有ADO NET源才可以使用@参数名但是感到奇怪的是“ADO NET 源”(如下图)查询居然不可以设置查询参数:

    image

  • 相关阅读:
    寒假作业1
    秋季学习总结
    记叙在人生路上对你影响最大的三位老师
    2019年春季学期第二周作业
    币值转换
    第九周作业
    第八周作业
    第七周作业
    第六周作业
    第五周作业
  • 原文地址:https://www.cnblogs.com/timy/p/1661241.html
Copyright © 2011-2022 走看看