数据库中存储过程的自动化生成
2006-07-23 11:17:31 来源:WEB开发网核心提示: 我们将使用的 UDF 只是简单地引用了 INFORMATION_SCHEMA.COLUMNS 视图,它提供某列的默认值,数据库中存储过程的自动化生成(7),与使用 sysconstraints 系统表相比,用这个视图来获取默认值更容易,按次序生成 T-SQL 脚本,正是 T-SQL 的 E
我们将使用的 UDF 只是简单地引用了 INFORMATION_SCHEMA.COLUMNS 视图,它提供某列的默认值。与使用 sysconstraints 系统表相比,用这个视图来获取默认值更容易。下一个 UDF 通过将默认值的查找逻辑包装到一个简单的函数调用中来简化这个过程。
CREATE FUNCTION dbo.fnColumnDefault(@sTableName varchar(128),
@sColumnName varchar(128))
RETURNS varchar(4000)
AS
BEGIN
DECLARE @sDefaultValue varchar(4000)
SELECT @sDefaultValue = dbo.fnCleanDefaultValue(COLUMN_DEFAULT)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @sTableName
AND COLUMN_NAME = @sColumnName
RETURN @sDefaultValue
END
列的默认值存储在一对圆括号中,但我们不需要。所以如你所看到的,我们将 COLUMN_DEFAULT 字段传递给另外一个函数 fnCleanDefaultValue,它将园括号剥离掉,然后返回实际的默认值。
例如,如果一个叫 nQty 的列有一个默认值 1,COLUMN_DEFAULT 值将当然包括(1)。如果默认值是“Enter Text Here”,我们就得到(“Enter Text Here”)。这里是这个 UDF 的源代码:
CREATE FUNCTION dbo.fnCleanDefaultValue(@sDefaultValue varchar(4000))
RETURNS varchar(4000)
AS
BEGIN
RETURN SubString(@sDefaultValue, 2, DataLength(@sDefaultValue)-2)
END
现在我们得到了所有创建自动化存储过程所需的元数据信息。
动态执行T-SQL
动态 T-SQL 的执行是我们的存储过程的精华所在,它允许你写一个通用的 T-SQL 脚本,按次序生成 T-SQL 脚本。正是 T-SQL 的 EXECUTE 命令允许通用的 T-SQL 脚本具体执行专门的输出,并创建将被应用程序使用的运行时存储过程。
更多精彩
赞助商链接