获得拼凑SQL语句运行后的结果
2013-10-17 18:19
477 查看
拼凑式的SQL语句太普遍了,比如说,任意条件的查询。
这种拼凑SQL语句,如果在数据库端组装,必然是一条长长的字符串,然后 exec(@sql)。
如果这条语句写在存储过程里边,存储过程的调用方会获得查询结果。但假如是这个存储过程里面就想拿到结果来进行处理,怎么办呢?
select exec(@sql)必然是错的。
可以酱紫:
为什么使用链接服务器的函数要用拼凑SQL呢,主要是因为有参数。而使用链接服务器的函数,不可以这样的:
===========================================================
很遗憾,这种方式不能用在SQL的函数里,否则报错:
在函数内对带副作用的运算符 'INSERT EXEC' 的使用无效
这种拼凑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语句运行后的结果
- 如何在脚本中执行SQL语句并获得结果输出?
- tomcat sql error:0 SqLState:null 必须执行该语句才能获得结果
- com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果
- com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果
- Sql语句中,Contains与Like查询结果不相同的问题
- ibaits 的动态sql语句 ,动态的表,动态的表结构,动态的拼凑 union
- 如何从EXPDP导出的文件里获得用户授权的SQL语句
- SQL查询结果集游标循环获得行数据
- 使用SQL语句获得服务器名称和IP 地址
- Oracle 如何在sql语句中获得随机数
- [转]SQL Server中获得EXEC后面的sql语句或者存储过程的返回值的方法
- 将根据字符查询转换后输出结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。
- 获得SQL语句或存储过程的返回值方法
- 用不同的SQL语句查出多个结果存入一个数据集的同一个字段的代码例子
- pl/sql中获得sql语句执行后影响的行数
- 如何获得当天,本周,本月的数据的sql语句写法。
- 项目中sql语句使用max函数,但查询结果与需求不符!
- Druid搭配log4j2输出SQL语句和结果
- 祝贺博文《软件开发高手须掌握的4大SQL精髓语句(综合篇)》三天内获得3500多次浏览