sql2012 ssis有啥用途
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql2012 ssis有啥用途相关的知识,希望对你有一定的参考价值。
参考技术A 微软BI产品 下的一个数据清洗工具。主要用来开发etl数据清洗工作。
就其用途而言,准备好的语句和 SQL 或 PL/pgSQL 函数有啥区别?
【中文标题】就其用途而言,准备好的语句和 SQL 或 PL/pgSQL 函数有啥区别?【英文标题】:What is the difference between prepared statements and SQL or PL/pgSQL functions, in terms of their purpose?就其用途而言,准备好的语句和 SQL 或 PL/pgSQL 函数有什么区别? 【发布时间】:2018-12-05 18:22:01 【问题描述】:在 PostgreSQL 中,prepared statement 与 SQL 或 PL/pgSQL 函数在用途、优缺点方面有何区别?我们什么时候用哪个?
在这个非常简单的示例中,它们的工作方式是否相同,对吗?
CREATE TABLE foo (id INT, name VARCHAR(80));
CREATE FUNCTION myfunc1(INT, VARCHAR(80)) RETURNS void AS '
INSERT INTO foo VALUES ($1, $2);
' LANGUAGE SQL;
SELECT myfunc1(3, 'ben');
CREATE FUNCTION myfunc2(INT, VARCHAR(80)) RETURNS void AS '
BEGIN
INSERT INTO foo VALUES ($1, $2);
END' LANGUAGE plpgsql;
SELECT myfunc2(3, 'ben');
PREPARE fooplan (INT, VARCHAR(80)) AS
INSERT INTO foo VALUES($1, $2);
PREPARE
EXECUTE fooplan(3, 'ben');
【问题讨论】:
【参考方案1】:所有三个“工作相同”,因为它们执行简单的 SQL 语句:
INSERT INTO foo VALUES (3, 'ben');
准备好的语句只适用于单个准备好的 SQL 语句(顾名思义)。而且只有 DML 命令。 The manual:
任何
SELECT
、INSERT
、UPDATE
、DELETE
或VALUES
声明。
函数可以包含任意数量的语句。 DML 和 DDL。只有 SQL 用于 SQL 函数。加上 PL/pgSQL 中的一些非 SQL 过程元素。
准备好的语句只在同一个会话中可见并在会话结束时消失,而函数仍然存在并且对所有人可见 - 仍然只对具有EXECUTE
权限的人可用。
预准备语句的开销最小。 (差别不大。)
SQL 函数是三个不能保存查询计划(单独)的唯一一个。 Read details about plan caching in PL/pgSQL functions in the manual here.
SQL 函数也是唯一一个在更大的查询中使用时可以为inlined 的函数。 (不过,INSERT
不是。)
一个相当全面的 SQL 和 PL/pgSQL 函数之间的区别列表:
Difference between language sql and language plpgsql in PostgreSQL functions从 Postgres 11 开始还有 SQL 过程:
When to use stored procedure / user-defined function?【讨论】:
谢谢。 “SQL 函数不能(单独)保存查询计划”是什么意思? @Ben:Prepared statements 保存查询计划以在同一会话中重复执行。 PL/pgSQL 函数将语句有效地视为准备好的语句。 SQL 函数没有。但是,在保存了计划的查询中使用 SQL 函数时,仍可能间接保存查询计划。 谢谢。 PostgreSQL文档说“PREPARE语句执行时,指定语句被解析、分析、重写 . 当随后发出EXECUTE命令时,准备好的语句被计划和执行。这种分工避免了重复的解析分析工作,同时允许执行计划取决于提供的特定参数值。”类似地,定义一个 SQL 函数并使用一些参数调用 SQL 函数是什么感觉? 另外,更大查询中的“内联”对于 SQL 函数意味着什么? 我在上面提供的链接答案中的更多详细信息:***.com/questions/24755468/…以上是关于sql2012 ssis有啥用途的主要内容,如果未能解决你的问题,请参考以下文章
SSIS 将所有 Paradox 表导入 SQL Server 2012
在 SQL Server 表中转储 SSIS USER 变量名称和值
试图通过SSIS教程。为SQL Server 2012创建一个简单的ETL包。