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

(0)

相关推荐

  • SqlServer快速检索某个字段在哪些存储过程中(sql 语句)

    代码如下所示: SELECT obj.Name 存储过程名, sc.TEXT 存储过程内容 FROM syscomments sc INNER JOIN sysobjects obj ON sc.Id = obj.ID WHERE sc.TEXT LIKE '%自己要查的内容%' 以上所述是小编给大家介绍的SqlServer快速检索某个字段在哪些存储过程中,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • 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' 附近有语法错误. 消息

  • 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

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

    自从 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.OpenSch

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

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

  • asp获取数据库中表名和字段名的代码

    复制代码 代码如下: < % '功能:显示数据库中表名.字段名.字段内容 '原创:wangsdong '原创文章,转载请保留此信息,谢谢 set rs=server.CreateObject("adodb.recordset") db="db1.mdb" set conn=server.CreateObject("adodb.connection") connstr="Provider=Microsoft.Jet.OLEDB.4.

  • MyBatis查询时属性名和字段名不一致问题的解决方法

    问题 当我们数据库中的字段和实体类中的字段不一致的时候,查询会出问题 数据库字段是 pwd id name pwd 1 张三 123456 2 李四 123456 3 王五 123456 4 赵六 123456 实体类字段是 password public class User { private int id; private String name; private String password; } 查出来结果发现, password 是 null User{id=1, name='张三

  • php mssql扩展SQL查询中文字段名解决方法

    一.问题: 数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名).其实操作就是对SQLServer查询记录,插入到MySQL里.选择的脚本语言是PHP,PHP打开MSSQL和MySQL扩展,对这两个数据库操作都是很容易的问题. 问题就出现在SQLServer中表的字段名是中文,写好的查询语句在SQLServe里测试是通过有记录返回,用PHP的MSSQL扩展查询

  • 使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名

    MySQL中查询所有数据库名和表名 查询所有数据库 show databases; 查询指定数据库中所有表名 select table_name from information_schema.tables where table_schema='database_name' and table_type='base table'; 查询指定表中的所有字段名 select column_name from information_schema.columns where table_schema

  • 动态给表添加删除字段并同时修改它的插入更新存储过程

    有一个表,用户需要在后台操作它,希望能对它动态进行添加删除字段.这个功能也许没有问题,但是它原有插入与更新的两个存储过程,也需要一起修改.因此Insus.NET实现了它,因此此文会让你了解到怎样动态为一个表添加删除字段以及动态修改它的存储过程 首先需要建一个表[A],这个表只有两个字段,一个是[ID]自动增长,另一个是表[B]的字段名,存储的每一笔记录,即是用户需要操作的表[B]的字段.这个表[A]需要建添加,更新,以及删除的存储过程,方便用户在后台方便操作,还有重点部分,需要写触发器.如有记录

随机推荐