Basically I am making ETL Project in which there is need to display Error Message in Multi Languages e.g.: US English, Japanese. User may have option to see Error Log Table in Japanese or US English, so I was working on it and found solution is below Sample Code, in which I¡¯m checking same validation twice first for US English language and second for Japanese language. I feel it will take little bit extra time. Is there any better option to achieve this Please Help¡¡..
SIMPLY COPY PASTE AND RUN
SET
NOCOUNT ON--> DECLARING @PhoneNumber TABLE VARIABLE HAVING PhoneNumber List
DECLARE
@PhoneNumber TABLE(PhoneNumbebr NVARCHAR(7))--> INSERTING PhoneNumber List INTO it.
--> Phone Number should be Integer Type.
INSERT
INTO @PhoneNumber VALUES('2766105')INSERT
INTO @PhoneNumber VALUES('2766110')INSERT
INTO @PhoneNumber VALUES('2766112')INSERT
INTO @PhoneNumber VALUES('2710XYZ') --> Invalid Phone NumberINSERT
INTO @PhoneNumber VALUES('2766116')INSERT
INTO @PhoneNumber VALUES('ABC6105') --> Invalid Phone NumberINSERT
INTO @PhoneNumber VALUES('2766199')INSERT
INTO @PhoneNumber VALUES('2766120')--> DECLARING @ErrorTable TABLE VARIABLE FOR STORING Error Messages in English and Japanese Lenguages.
DECLARE
@ErrorTable TABLE(EnglishErrorText NVARCHAR(1000),JapaneseErrorText NVARCHAR(1000))--> DECLARING @DistinationTable TABLE VARIABLE WILL STORE VALIDATED Phone List.
DECLARE
@DistinationTable TABLE(PhoneNumbebr INT)--> DECLARING THE VARIABLES TO STORE THE VALUES RETURED BY FETCH
DECLARE
@PhoneNo
NVARCHAR(50),@EnglishText
NVARCHAR(1000),@JapaneseText
NVARCHAR(1000)DECLARE
MultiLanguageErrorCursor CURSOR FOR SELECT PhoneNumbebr FROM @PhoneNumber OPEN MultiLanguageErrorCursor/* PERFORM THE FIRST FETCH AND STORE THE VALUES IN VARIABLES.
NOTE: THE VARIABLES ARE IN THE SAME ORDER AS THE COLUMNS
IN THE SELECT STATEMENT. */
FETCH NEXT FROM MultiLanguageErrorCursor INTO @PhoneNo--> CHECK @@FETCH_STATUS TO SEE IF THERE ARE ANY MORE ROWS TO FETCH.
WHILE @@FETCH_STATUS = 0 BEGIN --> INITILISATION OT VARIABLES SET @EnglishText = '' SET @JapaneseText = '' BEGIN TRY --> CHANGING LANGUAGE SETTING TO us_english SET LANGUAGE us_english INSERT INTO @DistinationTable SELECT CONVERT(INT,@PhoneNo) FETCH NEXT FROM MultiLanguageErrorCursor INTO @PhoneNo END TRY BEGIN CATCH SET @EnglishText = ERROR_MESSAGE() --> IT WILL RETURN English ERROR MESSAGE TEXT. --> CHANGING LANGUAGE SETTING TO Japanese TO GET ABOVE ERROR IN JAPANESE. SET LANGUAGE Japanese BEGIN TRY INSERT INTO @DistinationTable SELECT CONVERT(INT,@PhoneNo) END TRY BEGIN CATCH SET @JapaneseText = ERROR_MESSAGE() --> IT WILL RETURN Japanese ERROR MESSAGE TEXT. END CATCH /* RESETTING THE LANGUAGE TO us_english TO PREVENT FROMERROR NO 16958: Could not complete cursor operation because the set options have changed since the cursor was declared. */
SET LANGUAGE us_english --> INSERTING ERROR MESSAGE TEXT INTO @ErrorTable TABLE VARIABLE. INSERT INTO @ErrorTable VALUES(@EnglishText,@JapaneseText) FETCH NEXT FROM MultiLanguageErrorCursor INTO @PhoneNo CONTINUE END CATCH; END CLOSE MultiLanguageErrorCursor DEALLOCATE MultiLanguageErrorCursorSELECT
* FROM @ErrorTableGO