视图中不能声明变量,不能调用存储过程,如果写比较复杂的查询,需要应用存储过程

视图也可以和函数结合

存储过程通过select或其他语句返回结果集

除此之外,存储过程返回结果只有两种方式 1 return,2 output参数(主要)

http://blog.csdn.net/liangweiwei130/article/details/6691207

IF  EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[dbo].[GL_AllItemNamep]','p')    ) --视图v ,存储过程p,表u
DROP proc[dbo].[GL_AllItemNamep]
GO
create proc gl_allitemnamep @tblname as nvarchar(200) --注意此处没有括号
as
declare @sql as nvarchar(2000)
 set @sql='' --不赋值,在使用@sql=@sql+'.....' 不能初始化
 SET @sql = '
 if exists( select * from sysobjects where id=object_id('''+ @tblname + ''') and type=''u'')
 drop table ' +@tblname
 print @sql
 EXEC(@sql)
    set @sql='if not exists(select 1 from tempdb..sysobjects where name='''+@tblname +''' and xtype=''u'')
                    select ''97'' as citem_class,citemcode,citemname  into '+@tblname +' from  fitemss97 where 1=0 ' --应用where 1=0 建立数据表结构,再用insert into 插入数据,对于大数据量来说会比select into 效率高
    exec(@sql)
 print @sql
 set @sql=''
 declare @citem_class as nvarchar(10)
 declare @ctable as nvarchar(100)
 declare @cur as cursor
 set @cur=CURSOR FOR( select citem_class ,ctable from fitemclass)
 open @cur
 fetch @cur into @citem_class,@ctable

while @@FETCH_STATUS =0
 begin
  print @sql
  set @sql= @sql+ ' union select N''' + @citem_class + ''' as citem_class,citemcode,citemname  from  ' + @ctable + ' '
  fetch next from @cur into @citem_class,@ctable
 end
 close @cur
 deallocate @cur
 set  @sql= ' insert into ' +@tblname + ' select N''ch'' as citem_class,cInvCode as citemcode,cInvName as citemname from inventory  ' + @sql
 exec (@sql)
 print @sql
 
go

执行

exec GL_AllItemNamep 'AllItemName'
  select * from AllItemName

sqlserver总结-视图及存储过程的更多相关文章

  1. 刷新SqlServer所有视图【存储过程】

    摘自:http://www.cnblogs.com/yashen/archive/2004/12/23/81000.html CREATE PROCEDURE RefreshAllView AS DE ...

  2. 查询sqlserver数据库视图、存储过程等包含特定的字符串

    SELECT A.name , B.definition FROM SYS.objects A INNER JOIN sys.sql_modules B ON A.object_id = B.obje ...

  3. SqlServer更新视图存储过程函数脚本

    --视图.存储过程.函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR ...

  4. SQLServer如果查询表相关的视图以及存储过程

    最近在维护一个电商平台,需要对订单表增加字段,但是在review代码的时候发现这个平台的代码写的很有提升价值,且大量的使用了识图和存储过程,所以也给刚接触这个平台的萌新,也就是瓦,造成了不小的困扰,毕 ...

  5. SQLSERVER系统视图,系统表,sys.sql_modules视图

    SQLServer中提供了相当丰富的系统视图,能够从宏观到微观,从静态到动态反应数据库对象的存储结果.系统性能.系统等待事件等等.同时 也保留了与早期版本兼容性的视图,主要差别在于SQLServer2 ...

  6. T-SQL应用,视图、存储过程、触发器、游标、临时表等

    sqlserver常用操作: 视图.存储过程.触发器.函数 --*********************批处理********************* --[在一个批处理中存有一个语法错误,则所有 ...

  7. SQLSERVER系统视图 sql server系统表详细说明

    参考 https://www.cnblogs.com/luluping/archive/2012/11/05/2754639.html https://www.cnblogs.com/litubin/ ...

  8. 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO

    刷新SQL Server所有视图.函数.存储过程 更多   sql   此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...

  9. sqlserver刷新视图

    sqlserver 用于刷新当前数据库所有视图的存储过程 create procedure dbo.proc_refreshview as begin ) declare cur_view curso ...

随机推荐

  1. Robotium 测试方法

    1.检查CheckBox 是否选上,用solo.isCheckBoxChecked( “text” ). 有时候checkBox 没有相关的text,这时要用solo.isCheckBoxChecke ...

  2. C#中DataTable使用技巧

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...

  3. Html5的DeviceOrientation特性

    设备定位API 引用W3C中的设备定位API的规范描述可知,该API“……定义了多种新型DOM事件,旨在提供与主机设备相关的物理朝向与运动状态信息.”由API提供的数据产生自多种来源,其中包括设备上的 ...

  4. 安装win7 ubuntu双系统

    http://www.cnblogs.com/shengansong/archive/2011/10/23/2221716.html http://www.cnblogs.com/shenganson ...

  5. [转] - QThread应用探讨

    QThread 似乎是很难的一个东西,特别是信号和槽,有非常多的人(尽管使用者本人往往不知道)在用不恰当(甚至错误)的方式在使用 QThread,随便用google一搜,就能搜出大量结果出来.无怪乎Q ...

  6. 2014 top100

    下面是 TOP 100 的软件列表: 1. JFinal JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展. ...

  7. CSS系列:长度单位&字体大小的关系em rem px

    em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸. 任意浏览器的默认字体高都是16px.所有未经调整的浏览器都符合: 1em=1 ...

  8. SiteMesh装饰器使用总结

    SiteMesh是一个Java WEB项目的网页布局和修饰框架.使用SiteMesh后就不再需要在每个页面中都用<jsp:include>标签引入页头.页尾.导航等其他公用页面了. 可以将 ...

  9. Radeon HD 7850 vs Radeon R9 270X

    Radeon HD 7850 vs Radeon R9 270X  HW compare   Intro The Radeon HD 7850 comes with a GPU core speed ...

  10. LR中Vugen的多进程与多线程(脚本命令行)

    Controller使用驱动程序(如mdrv.exe或r3vuser.exe)来运行Vuser.用户可以在Controller的run-time setting中选择Vuser的运行方式:多进程/多线 ...