首先,谢谢大家。当我什至找不到单词来解释我要做什么的时候,您总是知道如何指引我。
我的几个表上的列的默认值需要等于其他表中其他列的一些复杂计算的结果。我的第一个想法是简单地使列默认值等于存储过程的结果。我还要从调用表的列中提取一个或多个参数。
我不知道该怎么做的语法,每当单词“存储”和“过程”在谷歌中彼此相邻时,我就会充斥着参数默认值的信息,而与我的实际情况无关想。
其中一半更是发泄而不是问题……尽管有什么想法?而且plz plz不要说“嗯,您可以使用插入式触发器来…”
您将不得不将该存储过程转换为用户定义的函数。返回类型不同的UDF-您要查看的是标量UDF-返回单个值。
因此,例如,您可以创建如下函数:
CREATE FUNCTION dbo.YourDefaultFunction(@Input1 INT, @Input2 VARCHAR(10)) RETURNS VARCHAR(100) AS BEGIN DECLARE @Result VARCHAR(100) SET @Result = @Input2 + ' - giving: ' + CAST(@Input1 AS VARCHAR(5)) RETURN @Result END
当然,您的会复杂得多:-)
完成此操作后,可以将其定义为VARCHAR(100)类型的列的默认值-可以直接在声明表时使用,也可以稍后通过一条ALTER TABLE语句进行定义:
ALTER TABLE
CREATE TABLE dbo.YourTable(....... SomeColumn VARCHAR(100) CONSTRAINT DF_YourTable_SomeColumn DEFAULT (dbo.YourDefaultFunction(417, 'Test')), .....)
或者 :
ALTER TABLE dbo.YourTable ADD CONSTRAINT DF_YourTable_SomeColumn DEFAULT (dbo.YourDefaultFunction(4711, 'Test2')) FOR SomeColumn
不幸的是,在将其他列定义为函数的默认值时,无法将其作为参数传递给函数。
有帮助吗?