3

全部:

关于我遇到的问题,我已经搜索了几个小时。谷歌和这里有类似的问题,但没有一个是相同的。

我有一个简单的存储过程 A,正确授予我的登录权限。它基本上用数据填充一些表。它与我的登录用户在同一架构中。我可以成功执行它,这意味着所有数据都按预期填充。但是,在执行结束时,消息窗口显示:

消息 15151,级别 16,状态 1,程序 A,第 xxx 行找不到对象“A”,因为它不存在或您没有权限。

行号指向 SP 定义的结尾。我不知道为什么会出现此错误消息,而 SP 在执行结果方面似乎完全没有问题。

编辑:

SP代码如下:

IF EXISTS (SELECT * FROM SysObjects WHERE id = OBJECT_ID('dbo.spA') AND type = 'P')
    DROP PROCEDURE dbo.spA
GO

CREATE PROCEDURE dbo.spA
    @ReportCCY as char(3) = 'GBP',
    @Date as date = null                  /* for regression testing */
AS
BEGIN

    if (@Date is null)
        select @Date = convert(varchar(20), max(VDate), 112) from JB H (nolock)

    declare @dbname as varchar(50)
    select @dbname = DB_NAME()
    exec DBA_admin.App.p_usr_Truncate @DB=@dbname, @Schema='dbo', @Table='ATable'

    insert into dbo.ATable
    select r.Value, I.id
    from Rates r
    join Inst I (nolock) on I.idCCyBase = r.idHold and r.ccyinto = @ReportCcy and r.dtDate = @Date
END

GRANT EXECUTE ON dbo.spA TO UserGrp
GO
4

1 回答 1

5

你在“END”之后忘记了“GO”。现在“GRANT EXECUTE”是您程序的一部分。

于 2012-12-03T17:50:15.073 回答