拼凑式的SQL语句太普遍了,比如说,任意条件的查询。

这种拼凑SQL语句,如果在数据库端组装,必然是一条长长的字符串,然后 exec(@sql)。

如果这条语句写在存储过程里边,存储过程的调用方会获得查询结果。但假如是这个存储过程里面就想拿到结果来进行处理,怎么办呢?

select exec(@sql)必然是错的。

可以酱紫:

declare @t TABLE
(
[CatchResultID] [bigint] NOT NULL,
[WebSiteKeyWordID] [int] NULL,
[Url] [varchar](300) NULL,
[Title] [varchar](300) NULL,
[CatchDate] [smalldatetime] NULL
); DECLARE @ID INT = 525215449;
--使用了链接服务器,调用其数据库里的自定义函数
declare @sql varchar(1000) = 'SELECT * FROM OPENQUERY([192.168.15.2,8888]
,''SELECT * FROM [db].dbo.cr_func_GetCatchResultById(' + CAST(@ID AS varchar(50)) + ')'');';
INSERT INTO @t(
[CatchResultID]
,[WebSiteKeyWordID]
,[Url]
,[Title]
,[CatchDate]
)
exec(@sql);
--看,里面有结果矣
select * from @t;

为什么使用链接服务器的函数要用拼凑SQL呢,主要是因为有参数。而使用链接服务器的函数,不可以这样的:

SELECT * FROM OPENQUERY([192.168.15.2,8888],@sql);

===========================================================

很遗憾,这种方式不能用在SQL的函数里,否则报错:

在函数内对带副作用的运算符 'INSERT EXEC' 的使用无效

获得拼凑SQL语句运行后的结果的更多相关文章

  1. 利用excel办公软件快速拼凑sql语句

    日常工作中经常会收到excel整理好的部门或者人员等数据信息并需要批量更新或者插入到数据库中,常用的办法有导入.脚本拼凑执行等,今天我介绍直接使用excel快速拼凑sql语句的方法 1.update批 ...

  2. 拼凑sql语句另外一个方法

    经常拼凑sql语句,经常是手工拼写 也可以利用字典另外一个模式拼凑 这里采用的是Dictionary中的Aggregate方法. 代码如下: static void Main(string[] arg ...

  3. 【spring boot】【log4jdbc】使用log4jdbc打印mybatis的sql和Jpa的sql语句运行情况

    在spring boot 中使用mybatis 想看到sql语句的运行情况. 虽然按照 之前说的配置了 logging.level.你的mapper包位置 = debug 但是依旧没有起作用. 所以采 ...

  4. 跟踪oracle中sql语句运行过程及相关知识拓展

    select * from v$sqlarea; select * from v$sqlarea where first_load_time>'2010-11-27/09:30:00'; 这种方 ...

  5. MySQL 动态sql语句运行 用时间做表名

    1. 描写叙述 在使用数据的时候,我时候我们须要非常多数据库,并且想用时间来做表名以区分.可是MySQL在存储过程中不支持使用变量名来做表名或者列名. 比方,有一个表我们想以"2015-07 ...

  6. 使用Excel拼凑SQL语句

       快速将一列多行数据合并到一个单元格            EXCEL如何快速将一列多行数据合并到一个单元格,并加分隔符?这是批量处理由一线业务员统计的数据时的常用方法,尤其是当一列数据是wher ...

  7. sql语句-排序后加入序号再运算判断取想要的项

    select a.id as aid,b.id as bid,a.city,a.cang,a.sid,a.time as atime,b.time as btime,a.price as aprice ...

  8. SQL 语句执行后同步返回结果条数

    PgSQL SELECT COUNT(*) OVER() AS res_count FROM table WHERE ... MySQL mysql> SELECT SQL_CALC_FOUND ...

  9. SqlServer教程:经典SQL语句集锦

    SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRAN ...

随机推荐

  1. BZOJ 4010 拓扑排序+heap

    思路: 反向图求最大拓扑序 反向输出 //By SiriusRen #include <queue> #include <cstdio> #include <cstrin ...

  2. IDEA 使用 git (码市)

    1.下载 git,并安装(一直下一步) 2.使用IDEA,检出项目,检出方式选择:git, 3.如果项目有修改,上传修改的文件 4.下载 SourceTree(git的图形化工具),并安装(一直下一步 ...

  3. 【转】SQL SERVER 主体,已同步

    转自郭大侠博客:  https://www.cnblogs.com/gered/p/10601202.html 目录 SQL SERVER 基于数据库镜像的主从同步... 1 1.概念... 2 1. ...

  4. 有关css的选择器优先级以及父子选择器

    css,又称样式重叠表,如今的网页的样式基本是div+css写出来的,功能十分强大,要想在html文件中引入css文件需要在<head></head>标签内输入一行:<l ...

  5. Pull-up resistors

    1 Introduction Pull-up resistors are very common in microcontrollers or any digital logic device. Wi ...

  6. Eigen与Matlab语法及语义辞典

    Eigen为Matlab转换为C++提供了一个简单的语法级别的代码迁移工具. 对一些代码进行了扩充,以便程序由Matlab到Eigen的移植................... 参考链接:http: ...

  7. Visual Basic for Application

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'The note of Visual Basic for Applicati ...

  8. dispatch_sync:As an optimization, this function invokes the block on the current thread when possible

    两件事情: 1.是否是一个线程: 2.queue task 的目标线程是否有未完成的task. 模型:一个线程处理当前的task还有通过gc d派发来的待执行task. 猜测: 如果目标thread上 ...

  9. C# ref 和 out 的使用

    private void button1_Click(object sender, EventArgs e) { ; ; Fun(ref a,ref b); //把a的地址和b的地址 传递过去 Mes ...

  10. webstorm界面主题

     http://www.webstormthemes.com/