Problema com Procedure SQL

16/05/2020

8

Boa tarde, estou criando uma procedure que faz um loop com o comando "sp_rename", porém estou
tendo um problema com o meu select. Pois o mesmo não está me retornando os valores que eu preciso.

ALTER PROCEDURE [dbo].[prcTranslateEliasTeste]
	@Table VARCHAR(100) 
AS
BEGIN
	-- Set NOCOUNT ON
	SET NOCOUNT ON

	-- Declaração de Variáveis
	DECLARE 
		 @id			NUMERIC (18, 0)
		,@Status		VARCHAR (100)
		,@NamePT		VARCHAR (100)
		,@NameEN		VARCHAR (100)
		,@ColumnEN		VARCHAR (100)
		,@ColumnPT		VARCHAR (100)
		,@RowCount		INT
		,@NumberRecords	INT
		,@ErrorMessage	NVARCHAR(4000)
		,@ErrorSeverity INT
		,@ErrorState	INT

	BEGIN TRY
		BEGIN TRANSACTION

		-- Seleção de Dados
		SELECT 
			 @id	 = idTransTable
			,@NamePT = sTableNamePT
			,@NameEN = sTableNameEN
		FROM tbTransTableElias (NOLOCK)
		WHERE  sTableNameEN = @Table
			OR sTableNamePT = @Table

		-- Verificando Status
		SELECT @Status = sStatus
		FROM tbStatusElias (NOLOCK)
		WHERE idTransTable = @id

		-- Criação de Tabela Temporária
		CREATE TABLE #tbTable
		(
			 [idTransTable]		[NUMERIC](18, 0) 
			,[sColumnNameEN]	[VARCHAR](100)
			,[sColumnNamePT]	[VARCHAR](100)
		)

		-- Inserindo Dados na Tabela Temporária
		INSERT INTO #tbTable 
			(
			 idTransTable
			,sColumnNameEN
			,sColumnNamePT
			)
		SELECT 
			 idTransTable
			,sColumnNameEN
			,sColumnNamePT
		FROM tbTransColumnElias
		WHERE idTransTable = @id

		SELECT 
			 @ColumnPT = [sColumnNamePT]
			,@ColumnEN = [sColumnNameEN]
		FROM tbTransColumnElias

		-- Obtendo Número de Registros da Tabela Temporária
		SET @NumberRecords = @@RowCount
		SET @RowCount = 1

		-- Tradução em Português
		IF (@Table = @NamePT)
		BEGIN
			UPDATE tbStatusElias
			SET sStatus = ''''''''English''''''''
			WHERE idTransTable = @id

			WHILE @RowCount <= 6
			BEGIN
				SET @ColumnPT = @Table + ''''''''.'''''''' + @ColumnPT

				EXEC sp_rename @ColumnPT, @ColumnEN
				
				SET @RowCount = @RowCount + 1

				PRINT @ColumnPT
			END

			EXEC sp_rename 
				 @Table
				,@NameEN
		END
		-- Tradução em Inglês
		IF (@Table = @NameEN)
		BEGIN
			UPDATE tbStatusElias
			SET sStatus = ''''''''Portuguese''''''''
			WHERE idTransTable = @id

			WHILE @RowCount <= 6
			BEGIN
				SET @ColumnEN = @Table + ''''''''.'''''''' + @ColumnEN

				EXEC sp_rename @ColumnEN, @ColumnPT

				SET @RowCount = @RowCount + 1
			END

			EXEC sp_rename @Table,@NamePT
		END

		-- Dropando Tabela Temporária
		DROP TABLE #tbTable

		COMMIT TRANSACTION
	END TRY

	BEGIN CATCH
		SELECT 
			 @ErrorMessage	= ERROR_MESSAGE()
			,@ErrorSeverity = ERROR_SEVERITY()
			,@ErrorState	= ERROR_STATE()

		ROLLBACK TRANSACTION

		RAISERROR 
				(
				 @ErrorMessage
				,@ErrorSeverity
				,@ErrorState
				)
	END CATCH
END
Elias

Elias

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar