拼凑式的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. 5.20 mybatis反向生成的映射文件xml(如果需要自己定义其他sql语句时如下)

    解决mybatis-generator 生成的mapper.xml覆盖自定义sql的问题 mybatis-generator是个好工具,一建即可生成基本增删改成功能的mapper.xml.但这些是不够 ...

  2. Android fragment的切换(解决REPLACE的低效)

    在项目中切换Fragment,一直都是用replace()方法来替换Fragment.但是这样做有一个问题,每次切换的时候Fragment都会重新实列化,重新加载一次数据,这样做会非常消耗性能用用户的 ...

  3. windows下查看端口进程占用情况

    引用:http://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html 我们在启动应用的时候经常发现我们需要使用的端口被别的程序占用,但是我 ...

  4. JavaScript变量提升及作用域

    今天在知乎看前端面试题的时候,看到这样的问题,发现自己懂的真的是太少了,看了给的例子,所以写一下自己的理解. 首先放一段代码: var v= “hello JavaScript”; alert(v); ...

  5. js实现“级联菜单”

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Java内存机制,内存地址

    问题一:String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); // ...

  7. HttpWebRequest 知识点

    string Url = System.Configuration.ConfigurationManager.AppSettings["CallPaperInvoiceURL"]; ...

  8. C# 跨平台换行符 System.Environment.NewLine

    C# 跨平台换行符 System.Environment.NewLine

  9. 强大的jQuery图片查看器插件Viewer.js

    简介 Viewer.js 是一款强大的图片查看器 Viewer.js 有以下特点: 支持移动设备触摸事件 支持响应式 支持放大/缩小 支持旋转(类似微博的图片旋转) 支持水平/垂直翻转 支持图片移动 ...

  10. 编码GBK和GB2312、Unicode、UTF-8

    一.编码GBK和GB2312 随着计算机发展,各国已经不满足于单纯用ASCII码: 对于我们来说能在计算机中显示中文字符是至关重要的,所以我们还需要一张关于中文和数字对应的关系表: 一个字节8位二进制 ...