相关疑难解决方法(0)

什么允许 SQL Server 用对象名称交换传递给系统过程的字符串

是什么导致将对象名称传递给系统存储过程是合法的sp_helptext

什么机制将对象名称转换为字符串?

例如

-- works
sp_helptext myproc
sp_helptext [myproc]
sp_helptext [dbo.myproc]
-- and behaves the same as a string
sp_helptext 'myproc'
sp_helptext 'dbo.myproc'

-- does not work
sp_helptext dbo.myproc -- Msg 102, Level 15, State 1, Line 1 incorrect syntax near '.'
-- an additional case that does not work.
sp_helptext [dbo].[myproc] -- Msg 102, Level 15, State 1, Line 1 incorrect syntax
Run Code Online (Sandbox Code Playgroud)

不需要单引号有效的.过程名称似乎很奇怪,除非它具有分隔模式名称和过程名称。我正在寻找有关如何将其从带引号的名称自动转换为要作为参数值传递的字符串文字的解释。

我没有要解决的具体问题;我只是对没有记录的事情感到好奇。

sql-server stored-procedures syntax parameter database-internals

13
推荐指数
1
解决办法
349
查看次数

函数 PARSENAME() 是否与 QUOTENAME() 相反

在问题MS-SQL 上是否有任何(隐藏的)内置函数来取消引用对象名称?作者正在寻求有关是否存在“取消引用”引用字符串的内部函数的建议。作者McNets已经注意到,一些内部函数可以处理引用(例如[MyTable])和未引用(例如)MyTable传递的参数值(例如OBJECT_ID())。

David Browne - Microsoft给出的答案 ( 1 ) 中,引述如下:

... QUOTENAME 的反面是 PARSENAME,它具有导航多部分名称的附加功能。

我不同意这部分答案的以下评论:

我不同意,你可以修改传递给一个参数PARSENAME()来显示多部分的部分标识是它的SERVERDATABASESCHEMAOBJECT部分。但恕我直言,PARSENAME与此相反的说法QUOTENAME有点牵强。

我现在的问题是:

函数PARSENAME()是相反的QUOTENAME()吗?

sql-server functions string-manipulation

7
推荐指数
1
解决办法
1739
查看次数