首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

在sqlserver中视图如何调用存储过程

2012-05-16 
在sqlserver中视图怎么调用存储过程?如题[解决办法]貌似不可以,不过你可以将存储过程里的语句封装成函数然

在sqlserver中视图怎么调用存储过程?
如题

[解决办法]
貌似不可以,不过你可以将存储过程里的语句封装成函数然后在视图中调用
给你个函数实例和语句中调用

SQL code
--创建函数实例Create Table Test3(aa int,bb nvarchar(200))goInsert INTO Test3 values(1,'广东省深圳市深圳火车站深圳火车站') -- 这行有重复的Insert INTO Test3 values(2,'北京市海淀区委')Insert INTO Test3 values(3,'广东省深圳市广东省深圳市火车站') -- 这行有重复的Insert INTO Test3 values(4,'我家住在黄土高坡')Insert INTO Test3 values(5,'湖南省长沙市万家丽路123号万家丽路123号') -- 这行有重复的GOCREATE FUNCTION CheckString(@str nvarchar(200))   RETURNS integer  AS    BEGINDECLARE @Length INTDECLARE @Point INTDECLARE @Substring NVARCHAR(100)DECLARE @SubPoint INTDECLARE @Gap INTDECLARE @DoHave INTDECLARE @StrTemp NVARCHAR(100)SET @Point = 1SET @Gap = 5SET @DoHave = 0SET @Length = LEN(@Str)WHILE @Gap + @Point <= @LengthBEGIN    SET @StrTemp = @Str    WHILE @Point + @Gap <= @Length    BEGIN        SET @Substring = SUBSTRING(@Str,@Point,@Gap)        SET @StrTemp = REPLACE(@Str,@Substring,'')        IF LEN(@StrTemp) < @Length - @Gap        BEGIN            SET @DoHave = 1            SET @Point = @Length        END        SET @Gap = @Gap + 1    END    SET @Point = @Point + 1    SET @Gap = 5ENDRETURN @DoHaveENDSELECT * FROM Test3 WHERE dbo.CheckString(bb) > 0
[解决办法]
视图是不能调用存储过程的。

可以调用存储过程的对象有: 触发器、存储过程、作业
[解决办法]
晕。视图是虚拟表。
存储过程的DBMS端的微程序。
视图只是经过SQL检验过的SQL语句。结果是一个行集或表的映射。
存储过程是一段dbms检验过的程序。是多条T-sql语句组成的程序代码。在dbms里运行。
这是有区别的。
除非在视图中设置触发器启动存储过程。
我在看来。视图就是一张表。调用就用Select
存储过程是程序更象炸蛋。存在。但必须要触发。
楼上说的触发器、其它存储过程、作业等。都是要点火触发这个过程的。必须要有个点火点才成。

热点排行