【发布时间】:2014-09-05 10:09:20
【问题描述】:
我试图在存储过程中创建我的视图,但我遇到了一个错误。
我的代码是:
alter PROCEDURE p.Azmoon1
AS
begin
EXEC ('IF OBJECT_ID (''r.r_Sales01_Requests__Duplicates'', ''V'') IS NOT NULL
DROP VIEW r.r_Sales01_Requests__Duplicates ;
go
create view r.r_Sales01_Requests__Duplicates (
CompanyID
,Branch
,Year
,VoucherType,VoucherNumber
,Date_Persian
,Row
) as
select
CompanyID
,Branch
,Year
,VoucherType,VoucherNumber
,Date_Persian
,Row
from t_SalesRequests
group by CompanyID,Branch,Year,VoucherType,VoucherNumber,Date_Persian,Row
having count(*)>1
go
')
end
当我像下面这样调用我的程序时:
execute p.Azmoon1
我收到了这些错误:
“go”附近的语法不正确
“CREATE VIEW”必须是查询批处理中的第一条语句。
超出最大存储过程、函数、触发器或视图嵌套级别(限制 32)。
【问题讨论】:
-
为什么要在存储过程内部创建视图?没有任何意义....如果您需要存储过程中的视图 - 您不能只使用 CTE(公用表表达式)吗?
-
错误原因是
GO不是有效的 SQL 关键字 - 它是 SQL Server Management Studio中可用的分隔符> 只有.... -
@marc_s 我想在存储过程中创建视图,因为我有将近 2500 个视图要创建,我想稍后轻松更改它们的架构。
-
嗯?您对为什么要从存储过程创建视图的解释根本没有任何意义。从存储过程创建视图如何使以后更容易更改架构?
-
我将视图创建为具有 2 个参数的存储过程,即 SchemaName 和 ViewName,我将调用我的存储过程,例如 Execute procedure @schema,@viewName,如果我想更改,我将创建我的视图我所有的视图模式我只需要改变我的变量(@schema)值来改变它,
标签: sql sql-server tsql stored-procedures view