【问题标题】:How to create a stored procedure with schemabinding?如何使用模式绑定创建存储过程?
【发布时间】:2015-12-03 10:11:23
【问题描述】:

我正在尝试使用模式绑定创建存储过程,但我无法这样做。

错误:

为语句“CREATE/ALTER PROCEDURE”指定了一个无效选项

甚至可以使用模式绑定创建存储过程吗?

create procedure dbo.proc_GetIncome  (
@fromdate datetime,  
@todate datetime  )
with schemabinding
as  
begin
declare @from varchar(8)  
declare @to varchar(8)  

select @from = YEAR(@fromdate) * 10000 +MONTH(@fromdate) * 100 +DAY(@fromdate)  
select @to = YEAR(@todate) * 10000 +MONTH(@todate) * 100 +DAY(@todate)  

select accountid , las.acctnm ,sum(amt) as Amount from nbfcledger led left join tbl_LASClientmaster las on led.AccountID=las.LasAcctNo  
  where glcode='INTRND' and dr_cr='d' and     
valuedate >= @from and valuedate <= @to  
group by accountid,las.acctnm   
end

【问题讨论】:

  • 你有什么版本的服务器?
  • @Igor ms sql server 2008
  • “普通”T-SQL 存储过程不支持架构绑定 - 只有“视图”在 SQL Server 2008 中有架构绑定选项。
  • 正如您在在线书籍中看到的那样,SQL-Server 2008 中的存储过程没有 SCHEMABINDING-Option msdn.microsoft.com/de-de/library/ms187926(v=sql.100).aspx

标签: sql sql-server sql-server-2008 tsql stored-procedures


【解决方案1】:

架构绑定仅受 natively compiled stored procedures 支持和要求,natively compiled stored procedures 仅在 SQL Server 2014 中引入。

这就是您在 SQL Server 2008 中遇到错误的原因。

【讨论】:

  • 我没有意识到这一点。谢谢你。顺便说一句,有什么解决方法吗?我想阻止任何人对已在此过程中使用的表进行任何更改,从而使该过程无法运行。
  • @Arbaaz 我知道的唯一方法是拒绝 ALTER 对此表的权限。
猜你喜欢
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多