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

  • 相关阅读:
    创建pycharm项目时项目解释器的选择
    chrome插件网站
    在chrome中屏蔽百度推荐
    annotation使用示例
    scala编程第16章学习笔记(3)——List类的高阶方法
    Eclipse常用快捷键
    Ubuntu常用命令
    scala编程第16章学习笔记(2)
    scala编程第16章学习笔记(1)
    scala编程第15章
  • 原文地址:https://www.cnblogs.com/timy/p/1661241.html
Copyright © 2011-2022 走看看