当前位置:首页 » 编程语言 » sql存储过程表名参数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql存储过程表名参数

发布时间: 2022-05-31 04:05:50

㈠ 在sql Server 语句中,如何将参数做为表名传递到查询语句中

可以使用动态sql来查询。

如:

declare@tablenamevarchar(20)
declare@sqlnvarchar(2000)
set@tablename='users'
set@sql=N'select*from'+@tablename+''
execsp_executesql@sql

结果

说明:

1、动态sql一般是这样传递参数:set @sql=N'select * from ' +@tablename+ ''

2、执行sql时以这种方式:exec sp_executesql @sql

3、定义动态sql变量时,要用nvarchar类型

㈡ SQL 中存储过程怎么使用

一、简单的储存过程:

1、创建一个存储过程

create procere GetUsers()

begin

select * from user;

end;12345

2、调用存储过程

call GetUsers();12

3、删除存储过程

drop procere if exists GetUsers;

二、带参数的存储过程

1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;

2、下面的存储过程接受三个参数 , 分别用于获取用户表的最小 , 平均 , 最大分数 , 每个参数必须具有指定的类型 , 这里使用十进制值(decimal(8,2)) , 关键字 OUT 指出相应的参数用来从存储过程传出

create procere GetScores(

out minScore decimal(8,2),

out avgScore decimal(8,2),

out maxScore decimal(8,2)

)

begin

select min(score) into minScore from user;

select avg(score) into avgScore from user;

select max(score) into maxScore from user;

end;1234567891011

3、调用此存储过程 , 必须指定3个变量名(所有 MySql 变量都必须以@开始) , 如下所示 :

call GetScores(@minScore, @avgScore, @maxScore);12

4、该调用并没有任何输出 , 只是把调用的结果赋给了调用时传入的变量@minScore, @avgScore, @maxScore, 然后即可调用显示该变量的值 :

select @minScore, @avgScore, @maxScore;

5、使用 IN 参数 , 输入一个用户 id , 返回该用户的名字 :

create procere GetNameByID(

in userID int,

out userName varchar(200)

)

begin

select name from user

where id = userID

into userName;

end;12345678910

6、调用存储过程 :

call GetNameByID(1, @userName);

select @userName;123

㈢ VB SQL 存储过程中使用参数作为工作表名

ALTER PROCEDURE [dbo].[AddNewRS]
@GPDM nvarchar(50),@GPCN nvarchar(50),@BName nvarchar(50)
AS
BEGIN
declare @sql nvarchar(2000)--定义变量@sql用于保存sql语句
set @sql =
'insert into ' + @BName + ' (GPDM,GPCN) values(' + @GPDM +',' + @GPCN+ ')'
exec(@sql)--执行sql语句
END

㈣ 关于给SQL存储过程表名作为参数的问题

定义 一个变量
DECLARE @sql Varchar(max)
set @sql= 'SELECT * FROM' +@TableName+ 'where Row between' + @startRecordIndex +'and'+ @endRecordIndex
--最后再
exec @sql
纯页面手打,也不知道有没有格式上错误,但意思已经表达的很清楚了
ALTER procere [dbo].[P_Pro_Women]
(@startRecordIndex int,
@endRecordIndex int,
@TableName varchar(50),
@BrandId int,
@sql Varchar(max))
as
begin
set @sql='SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY ProctId desc)AS Row, * from '+@TableName +' where brandid ='+@BrandId+') where Row between '+ @startRecordIndex+' and '+@endRecordIndex
exec @sql
end
也不知道你是不是这个意思

㈤ sql存储过程表名是参数,查询这个表中的某个字段,得到查询结果

改为
declare @sql nvarchar(200)
set @sql='select code from '+@TableName
exec (@sql)

㈥ SQL 存储过程中参数怎么使用

存储过程不支持的可以考虑使用用户定义函数来实现,如: CREATE FUNCTION Order_Customer (@FirstName varchar(20),@LastName varchar(20)) RETURNS @Order_

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

获取结果不是这么写的

可以用下面这种写法:
DECLARE @T INT;
DECLARE @Sql NVARCHAR(200);
set @Sql = 'SELECT @T = START FROM ' + @TABLENAME + ' WHERE ...';
EXEC SP_EXECUTESQL @Sql, N'@T INT OUTPUT', @T OUTPUT;

㈧ sql数据汇总一张表 用sql语句或存储过程怎么写

各公司的表是不同的名称,没有规律是吧?
如果有规律比如table1、table2……方便多了。
在存储过程中,直接利用循环,查询各表中的数据,累加到一个临时数值上,然后将该数值插入到汇总表。具体实现,不同的数据库有细微差别。
如果是没有规律的,则需要将各表名作为存储过程参数,比如用传入字符串table1|table2|……|tablexxx|
然后在存储过程中,解析该字符串,之后循环查询。
存储过程其实和c语言编程等编程语言实现语义上没有多大区别,逻辑清楚了,多看几个示例,就会弄了。
如果不想存储过程,也可以用触发器,在每张表上建一个触发器,将所有记录更新到汇总表。或者直接用视图,将各表的结果直接汇总select
isnull(a.期初数,0)
+
isnull(b.期初数,0)
+
……
总期初数
from
table1
a
left
join
table
2
b
on
a.年=b.年
left
join
……
where
a.年='2011'

㈨ mysql 存储过程 数据库表名字段作为参数传递给存储过程的方法

直接将数据库表名字段作为字符类型传到存储过程中,存储过程拼接sql语句,再用exec执行。例如:
CREATE PROCEDURE [proc_test]
(@tablename varchar(100))
WITH
EXECUTE AS CALLER
AS
declare @sql varchar(1000);
set @sql='select * from '+@tablename
exec(@sql)
GO

再直接执行 exec proc_test '学生表'

㈩ sql 存储过程 IN参数表名

以下写法供参考:
CREATE PROCEDURE `test1`(IN tab_name VARCHAR(40) )BEGIN
SET @t1 =CONCAT('SELECT * FROM ',tab_name );
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;END $$