T-SQL过程参数名称

时间:2017-05-02 12:29:12

标签: tsql

我必须创建一个与excel列具有相同参数名称的过程。有些人喜欢这样' xxx / xxx'或者&x; xxx - xxx'。有没有什么方法可以在这样的存储过程中命名参数?

2 个答案:

答案 0 :(得分:0)

变量名中不允许使用正斜杠(/)或短划线( - )

根据http://msdn.microsoft.com/en-us/library/ms175874.aspx,这意味着允许的字符是:

  • Unicode标准3.2中定义的字母。 Unicode 字母的定义包括从a到z的拉丁字符, 从A到Z,还有其他语言的字母。

  • 来自Basic Latin或其他国家/地区脚本的十进制数字。

  • at符号(@),美元符号($),数字符号(#)或下划线(_)。

答案 1 :(得分:0)

首先,为什么你会想要使用特殊字符?这就像是说我想用电力在水下烤面包,为什么我不能有这样的出口呢?特殊字符表示特殊事物,因此许多引擎不仅仅在SQL中,但大多数语言都不允许在变量中使用保留字符。您可以做的最好的事情是使用反转的'_'放入参数,然后在已经创建对象之后替换为回显。占位符名称'@(something)'实际上是任意的,可以是@X或@LookAtMe。它的类型对于形成一个必须满足执行的合同很重要,但命名实际上是为了挂钩。话虽如此,如果你必须让这些奇怪的名字得到回应,你可以这样做:

CREATE PROC pSimpleParam @My_Param INT
AS 
SELECT @My_Param
GO

ALTER PROC pSimpleParam @My_Param INT
AS 
SELECT
  pr.name AS ParameterName
, REPLACE(pr.name, '_', '-') AS AlteredParameterName
FROM sys.procedures p
  INNER JOIN sys.parameters pr ON pr.object_id = p.object_id
    AND p.name = 'pSimpleParam'
GO