Есть ли способ передать все имена таблиц в базе данных в качестве параметра для SP? - PullRequest
2 голосов
/ 19 марта 2019

Я хочу запустить скрипт проверки по столбцам для всех таблиц в базе данных в MS SQL SERVER.Мой запрос теперь выглядит примерно так:

CREATE PROCEDURE [dbo].[DDS1718_Validation] 
AS
BEGIN

SET FMTONLY OFF

DECLARE @ActualTableName AS NVarchar(255)

SELECT @ActualTableName =QUOTENAME(TABLE_NAME )
FROM INFORMATION_SCHEMA.TABLES

, однако он выбирает вывод только для одной таблицы.Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 марта 2019
DECLARE @ActualTableName AS varchar(max)

SELECT @ActualTableName = COALESCE(@ActualTableName + ',', '') + TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES

SELECT @ActualTableName

Теперь у вас есть все имена таблиц, отправьте это @ActualTableName в хранимую процедуру.В хранимой процедуре вы можете разделить имена таблиц с помощью ','.

разделить строку в sql

0 голосов
/ 19 марта 2019

Вы можете использовать табличный параметр.Перед вызовом Sp, заполните табличный параметр всеми именами таблиц, а затем вызовите sp и передайте параметр точно так же, как вы передаете параметр int или float.

Подробнее: https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-table-valued-parameters-database-engine?view=sql-server-2017

...