如何在SQL服务器中定义字符串变量,以便我可以在程序中的多个位置使用字符串并使重构更容易



在Java或Swift等高级编程语言中,如果我想在同一程序中多次使用字符串,我可以定义一个字符串变量来表示该字符串,以避免在多个地方键入相同的字符串。 同时,使字符串的折射更容易

在爪哇语中

final String myStringConstant = "hello world";

在斯威夫特

let myStringConstant = "hello world" 

我只是想知道是否可以在Microsoft SQL Server中做同样的事情?我见过在代码中的多个位置键入相同字符串值的代码,这使得在其中一个地方拼错字符串非常容易,从而搞砸程序。用于表示字符串的字符串变量将非常有用。

是不可能的,但您可以创建返回此常量的标量用户定义函数

CREATE FUNCTION dbo.fn_HelloWorld ()
RETURNS VARCHAR(MAX) 
AS
BEGIN 
    RETURN 'Hello world'
END

请注意,与 Java 中的final不同,T-SQL 中的标量函数可以降低性能。

对于类似的需求,我的解决方案是编写一个自定义脚本处理工具作为sqlcmd的替代方案。 此工具允许您定义"替换变量",这些变量就像可以在代码中的任何位置替换的宏。 替换变量定义隐藏在 SQL 注释中,使用的语法类似于您的示例:

-- !x! sub MyStringConstant hello world

其中!x!是将其标识为脚本处理器命令的标记,sub是定义替换变量的命令,其余部分应该是显而易见的。 如果您愿意尝试 sqlcmd 的替代方案,则可以从 https://pypi.python.org/pypi/execsql<</p>

div class="one_answers" 获取此替代脚本处理器>
declare @var int = 12;
select @var;
select * from bid;
select @var;

但它将无法在go;中幸存下来

最新更新