ncry.net
当前位置:首页 >> SQL SERVER 中把表名作为参数传递给存储过程后,怎么把表中的数据赋值给存储过程的变量? >>

SQL SERVER 中把表名作为参数传递给存储过程后,怎么把表中的数据赋值给存储过程的变量?

在各关键词之间没有加空格分隔开 SELECT,FROM, WHERE前后都需要有空格EXEC ('SELECT '+@T+'=START FROM '+@TABLENAME+' WHERE.)

declare @id intselect @id = user_id from users where name = '张三' -- 从users表读取张三的user_id,并赋值给变量@idexecute upYourProc @id --将变量传递给存储过程.

为了提取出公共的fuction提高执行效率,需要传递表的字段作为参数,语法可以通过,但是查询结果不正确.将表字段参数换成实际的字段就可以,问题出在“如果将表名,字段名做为参数传递到Sql Server中”出错的:create function

--楼主我帮你解答--楼主这个只是一个简单的脚本 不是存储过程 --然后你声明的变量 和下面调用的变量不一样 肯定报错了--declare 声明变量 是要赋给初始值的 否则也会报错declare @errtype nvarchar(50)=''--这里是声明一个变量select @errtype = sum(xx) from a print (@errtype) --这里可以把变量值显示出来--有什么问题可以随时找我 希望采纳

CREATE PROC PROC_TEST (@TABLENAME VARCHAR(100)) AS exec( 'SELECT COUNT(*) FROM '+ @TABLENAME) 复杂点的 CREATE PROC PROC_TEST (@TABLENAME VARCHAR(100)) AS declare @sql varchar(8000) set @sql='SELECT COUNT(*) FROM '+ @TABLENAME exec(@sql )

首先你要知道“另一个存储过程”的结果集的所有列的类型.假设“另一个存储过程”的名字是sp1,没有参数,返回的结果集共3列,全部为int型,那么就在你说的“存储过程”里添加一个与结果集列数相同的临时表或表变量用于接收“另一个存储过程”的结果集如下CREATE PROCEDURE sp2ASDECLARE @t table(a int,b int,c int)INSERT INTO @t(a,b,c)EXEC sp1SELECT * FROM @t

可以使用动态sql来查询. 如: declare @tablename varchar(20)declare @sql nvarchar(2000)set @tablename='users'set @sql=n'select * from ' +@tablename+ ''exec sp_executesql @sql结果 说明: 1、动态sql一般是这样传递参数:set @sql=n's

第二个存储过程,末尾写上 return a 即可.

将SQL语句作为参数传到存储过程,请参见一下示例: -- 创建示范存储过程create procedure mypro1(@strSql nvarchar(4000))asexecute sp_executesql @strsqlgo-- 创建示范表并插入数据create table test1 (id int primary key,name nvarchar(50));

update a set name = '李四' where name = '张三' or name is null

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.ncry.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com