在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>
declare @var int = 12;
select @var;
select * from bid;
select @var;
但它将无法在go;
中幸存下来