mssql存储过程表名和字段名为变量的实现方法_MsSql

没有使用动态语句直接报错

错误的

复制代码 代码如下:

alter proc testpapers
as
begin
declare @tems nvarchar(max),@zidaun nvarchar(max)
set @tems=select * from @tems order by @zidaun
exec(@tems)
end
exec testpapers

消息 156,级别 15,状态 1,过程 testpapers,第 1 行
关键字 'select' 附近有语法错误。
消息 1087,级别 15,状态 2,过程 testpapers,第 1 行
必须声明表变量 "@tems"。

首先要让表名或者字段为变量则要用到动态语句

错误的

复制代码 代码如下:

alter proc testpapers
as
begin
declare @tems nvarchar(max),@zidaun nvarchar(max)
set @tems='select * from @tems order by @zidaun ';
exec(@tems)
end

exec testpapers

消息 1087,级别 15,状态 2,第 1 行
必须声明表变量 "@tems"。

将表名和字段名写到exec里边

正确的

复制代码 代码如下:

alter proc testpapers
as
begin
declare @startRow nvarchar(max),@tems nvarchar(max),@zidaun nvarchar(max)
set @startRow='temp'
set @tems='select * from ';
set @zidaun='p_id';
exec(@tems+@startRow+' order by '+@zidaun)
end

exec testpapers

时间: 2024-08-04 10:51:12

mssql存储过程表名和字段名为变量的实现方法_MsSql的相关文章

mssql存储过程表名和字段名为变量的实现方法

没有使用动态语句直接报错 错误的 复制代码 代码如下: alter proc testpapers as begin declare @tems nvarchar(max),@zidaun nvarchar(max) set @tems=select * from @tems order by @zidaun exec(@tems) end exec testpapers 消息 156,级别 15,状态 1,过程 testpapers,第 1 行 关键字 'select' 附近有语法错误. 消息

检查两个数据库里的表名、字段是否一致的一种方法

不知道大家有没有遇到过这种情况. 程序已经给客户安装上了,并且客户已经录入了一些信息,然后程序还需要作比较大的变动(修改功能.增加模块等),数据库就不可避免要做一些改动. 但是这时候已经不能把客户的数据库删掉,换上新的数据库了.只能用添表.添字段的方式了. 如果修改程序的时候做了详细的文档的话,那么就可以按照文档来修改数据库了,但是如果没有文档,或者文档记录的不全,或者修改完成之后想检查一下有没有"漏网之鱼".那么这时候应该怎么办呢?难道要一个一个的检查?! 我们可以使用两个视图和几个

如何取得一个表的所有字段名用逗号分割

自从 Oracle 9i 开始,就可以通过SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以"path"或者层次元素列表的形式显示出来. 取得一个表的所有字段名,用逗号分割. select max(substr(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','),2)) col from (select COLUMN_NAME,column_id from user_tab_columns where table_name='&表名

ASP获取数据库表名、库名、字段名的方法

 ASP获取数据库表名,字段名 以SQLServer为例: < %   SET Conn=Server.CreateObject("ADODB.Connection")   Conn.Open "Server=IP地址;Provider=sqloledb;Database=库名称;UID=用户名;PWD=密码;"   %> 读SqlServer库中的表名: < %   Set rs=Conn.OpenSchema(20)   While not r

mybatis动态insert-mybatis 动态insert 传入表名、字段名、数据

问题描述 mybatis 动态insert 传入表名.字段名.数据 需求: 输入:1000个不同的csv文件,每个csv文件10000条记录: 输出:将这些文件存储到每个csv文件对应的数据库中的表中: 求动态sql的书写???: 注:csv文件的第一行和数据库中的字段名一致 解决方案 mybatis 传入动态表名MyBatis动态传入表名,字段名参数的解决办法MyBatis,动态传入表名,字段名的解决办法 解决方案二: insert into #{表名} (#{字段1},#{字段2}) val

SQL提取数据库表名及字段名等信息代码示例

本文向大家介绍了使用SQL语句提取数据库所有表的表名.字段名的实例代码,在SQLserver 中进行了测试,具体内容如下: --查询所有用户表所有字段的特征 SELECT D.Name as TableName, A.colorder AS ColOrder, A.name AS Name, COLUMNPROPERTY(A.ID,A.Name, 'IsIdentity') AS IsIdentity, CASE WHEN EXISTS (SELECT 1 FROM dbo.sysobjects

mysql数据同步:不同数据库名,不同表名,字段名也不相同,怎么同步数据呢?

问题描述 mysql数据同步:不同数据库名,不同表名,字段名也不相同,怎么同步数据呢? 工作当中遇到了一个问题,本人刚入行菜鸟不知道怎么解决,想问问大虾: A服务器上有数据库db_a,库中有表tbl_a,表中有字段col_a, B服务器上有数据库db_b,库中有表tbl_b,表中有字段col_b, AB数据库名不同,表名不同,字段名也不同. 现在需要把A服务器上tbl_a表中col_a字段的数据 同步到 B服务器上tbl_b表中col_b字段. (也不知道我的描述各位看官能看懂不) 该怎么做呢?

ASP获取数据库表名、库名、字段名的方法_应用技巧

ASP获取数据库表名,字段名 以SQLServer为例: 复制代码 代码如下: < %   SET Conn=Server.CreateObject("ADODB.Connection")   Conn.Open "Server=IP地址;Provider=sqloledb;Database=库名称;UID=用户名;PWD=密码;"   %> 读SqlServer库中的表名: 复制代码 代码如下: < %   Set rs=Conn.OpenSch

Mybatis动态调用表名和字段名的解决方法_java

一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能.今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字段不让用户查询到.这种情况下,就需要构建sql来动态传入表名.字段名了.现在对解决方法进行下总结,希望对遇到同样问题的伙伴有些帮助. 动态SQL是mybatis的强大特性之一,mybatis在对sql语句进行预编译之前,会对sql进行动态解析,解析为一个BoundSql对象,也是在此处对动态sql进行处理.下面让我们先