存储过程中拼接字符串

1.将查询数据插入临时表

最开始我这么写的

DECLARE @sql varchar(max)
SET @sql=‘select * into #tmp from tb‘
EXEC(@sql)
SELECT * FROM #tmp

报错

对象名‘#tmp‘无效

可以改成这样子

CREATE TABLE #tmp(....)
DECLARE @sql varchar(max)
SET @sql=‘select *  from tb‘
INSERT #tmp EXEC(@sql)
SELECT * FROM #tmp

即先创建一个临时表,然后把数据插入临时表中。

可以直接使用全局临时表实现这个功能

DECLARE @sql varchar(max)
SET @sql=‘select * into ##tmp from tb‘
EXEC(@sql)
SELECT * FROM ##tmp

2.将查询结果保存到变量

开始我是这么写的

DECLARE @sum INT
DECLARE @sql varchar(max)
SET @sql=‘select @sum=sum(f1) from tb‘
EXEC sp_executesql @sql,N‘@sum int‘,@sum output

会报错

过程需要类型为‘ntext/nchar/nvarchar‘的参数‘@statement‘

发现需要把@sql的类型从varchar改成nvarchar

时间: 2024-10-29 19:07:05

存储过程中拼接字符串的相关文章

SQL Server数据库存储过程中拼接字符串注意的问题

在SQL Server数据库中书写复杂的存储过程时,一般的做法是拼接字符串,最后使用EXEC sp_executesql '拼接的字符串' 查询出结果. 先看一段代码: 1 -- ============================================= 2 -- Author: XXX 3 -- Create date: 2014-09-19 4 -- Description: 获取学生列表信息 5 -- ====================================

sqlserver 存储过程中拼接sql语句 动态执行

ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S

解决存储过程中拼接的SQL字符串超长导致sql语句被截取的问题

今天遇到了一个奇葩的问题:存储过程中的sql字符串拼接的太长,超出了分页存储过程执行sql参数的nvarchar(4000)的长度. 没办法,只能修改自己的存储过程,因为分页存储过程是不能动的. 开始想到的方法是将里层的select语句抽出来,用exec(strInnerSql)执行,将查询胡来的数据放到临时表中,在@s中用临时表获取数据,结果以时报告终 错误原因:执行@s语句的时候找不到执行exec(strInnerSql)产生的临时表 好郁闷啊,怎么会这样呢,明明在一个存储过程中执行的,怎么

[每天解决一问题系列 - 0004] Excel 公式中拼接字符串

问题描述: 之前很少用excel的formula,今天用户发过来一个文件,里边存储了很多字段对应的编号.想把这些生成我想要的格式,然后导入代码中,当然可以使用第三方的excel操作库来做.最简单直接的方法自然是用excel强大的formula功能了. 解决方法: 假如A1的值为aaa,B1的值为bbb,我想要的结果是(“aaa","bbb"); 其实很简单,只需要用&来拼接字符串即可,比如 = A1&B1.要得到我想要的结果,只需这么做就可以 = "

EL中拼接字符串的方法

近期在项目中碰到一个需要在JSP页面中比较两String类型的值的问题,于是想当然的写了如下代码: <c:if test="${'p'+longValue=='p1'}">some text</c:if> 其中longValue是requestScope中一个Long类型的值,访问JSP页面,报错,查看控制台,抛了NumberFormatException异常 java.lang.NumberFormatException: For input string:

html中拼接字符串问题

hmtl拼接问题: 今天在同事解决问题的时候发现 html <lable id="p"[email protected]></label> 拼接出来的是 p+5 <lable id="p'[email protected]'"></label> 拼接出来的是 p"+5" 这些都不是我们想要的效果,而且js jquery中 id是不认的 正确拼接方法如下 <lable id=‘[email pr

mysql concat update中拼接字符串

mysql> select id,avatar from tf_user; +----+--------------+ | id | avatar | +----+--------------+ | 1 | avatar_1.png | | 2 | avatar_6.png | | 3 | avatar_1.png | | 4 | avatar_5.png | | 5 | avatar_5.png | | 6 | avatar_4.png | | 7 | avatar_6.png | | 8 |

SQL中in参数在存储过程中传递及使用的方法

背景: 1.使用存储过程 2.存储过程中有in 3.in括号里面的内容作为参数传递 解决方案: 1.直接拼接sql 可在存储过程中拼接字符串,然后执行此字符串,类似于js中的eval PROCEDURE [dbo].[INSelect] @P_0 NVARCHAR(600) AS DECLARE @A VARCHAR(6000) SET @A='SELECT * FROM testTb WHERE zip IN ('[email protected]_0+')' 然后用系统存储过程sp_exec

SQL 存储过程中in

存储过程中用in,如果将条件(1,2,3)这样的集合当成参数传进来的话是不能执行的,因为集合转成一个变量是出错 解决办法拼接SQL字符串传进来,后者在存过中拼接字符串都可以如: ALTER PROCEDURE [dbo].[db_MoveArticleByClassId] @SqlString varchar(4000) AS BEGIN BEGIN TRAN -- 显示定义并开始一个事务 SET XACT_ABORT ON -- 表示遇到错误立即回滚 exec('UPDATE db_artic