我有一個存儲過程應該能夠在我的MS Sql服務器上的任何數據庫的任何表上執行。 EXEC和USE語句的大部分組合沒有任何結果。這裏是存儲過程:如何爲另一個數據庫執行存儲過程?
CREATE PROCEDURE [dbo].[usp_TrimAndLowerCaseVarcharFields]
(
@Database VARCHAR(200),
@TableSchema VARCHAR(200),
@TableName VARCHAR(200)
)
AS
BEGIN
DECLARE @sSql VARCHAR(MAX)
SET @Database = '[' + @Database + ']'
SET @sSql = ''
-- Create first part of a statement to update all columns that have type varchar
SELECT @sSql = @sSql + COLUMN_NAME + ' = LOWER(RTRIM(' + COLUMN_NAME + ')), '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'varchar'
AND TABLE_CATALOG = @Database
AND TABLE_SCHEMA = @TableSchema
AND TABLE_NAME = @TableName
SET @sSql = 'UPDATE ' + @Database + '.' + @TableSchema + '.' + @TableName + ' SET ' + @sSql
-- Delete last two symbols (', ')
SET @sSql = LEFT(@sSql, LEN(@sSql) - 1)
EXEC(@sSql)
END
請給我建議我在[OtherDB]上執行它[[TargetTable]]。
'EXEC'還支持'爲對鏈接服務器運行命令AT'。 –
和4部分命名例如exec [linkedserver]。[database]。[schema]。[proc] –