Project

General

Profile

2.8 UPDATE CAU LENH EXECUTE STORE.txt

Luc Tran Van, 07/05/2021 04:52 PM

 
1
ALTER PROCEDURE [dbo].[EXECSQL] @l_QUERY NVARCHAR(max) 
2
AS 
3

    
4
DECLARE @CHAR VARCHAR(15) = CONVERT(VARCHAR,(YEAR(GETDATE()))) + CONVERT(VARCHAR,(MONTH(GETDATE())))+ CONVERT(VARCHAR,(DAY(GETDATE())))
5

    
6
IF CHARINDEX(@CHAR, @l_QUERY) = 0
7
BEGIN
8
	SELECT N'Bạn không được quyền cập nhật' RESULT, 
9
             '-1'          ErrorDesc 
10
	RETURN -1
11
END
12

    
13
    DECLARE @l_INDEX_QUERY NVARCHAR(max) 
14
    DECLARE @errNum  INT,
15
			@errLine INT, 
16
            @errDesc VARCHAR(200) 
17
    DECLARE cur CURSOR FOR 
18
      SELECT value 
19
      FROM   Wsisplit(@l_QUERY, '¿') 
20

    
21
    OPEN cur 
22

    
23
    FETCH next FROM cur INTO @l_INDEX_QUERY 
24

    
25
    WHILE @@FETCH_STATUS = 0 
26
      BEGIN 
27
          BEGIN try 
28
              EXEC Sp_executesql 
29
                @l_INDEX_QUERY 
30
          END try 
31

    
32
          BEGIN catch 
33
              IF( @errNum IS NULL 
34
                   OR @errNum = '' ) 
35
                BEGIN 
36
                    SET @errNum = CONVERT(VARCHAR(10), Error_number()); 
37
					SET @errLine = CONVERT(VARCHAR(5), ERROR_LINE());
38
                    SET @errDesc = Error_message(); 
39
                END 
40

    
41
              BREAK; 
42
          END catch 
43

    
44
          FETCH next FROM cur INTO @l_INDEX_QUERY 
45
      END 
46

    
47
    IF( @errNum IS NULL 
48
         OR @errNum = '' ) 
49
      BEGIN 
50
          SELECT 'SUCCESSFULL' RESULT, 
51
                 ''            ErrorDesc 
52

    
53
          RETURN; 
54
      END 
55

    
56
    CLOSE cur 
57

    
58
    DEALLOCATE cur 
59

    
60
  BEGIN try 
61
      EXEC Sp_executesql 
62
        @l_QUERY 
63

    
64
      SELECT 'SUCCESSFULL' RESULT, 
65
             ''            ErrorDesc 
66
  END try 
67

    
68
  BEGIN catch 
69
      IF( @errNum IS NOT NULL 
70
           OR @errNum <> '' ) 
71
        SELECT 'ERROR AT LINE ' + CONVERT(VARCHAR(5), ERROR_LINE())    AS RESULT, 
72
               CONVERT(VARCHAR(10), @errNum) + ' - ' 
73
               + @errDesc ErrorDesc 
74
      ELSE 
75
        SELECT 'ERROR AT LINE ' + @errLine                    AS RESULT, 
76
               CONVERT(VARCHAR(10), Error_number()) 
77
               + ' - ' + Error_message() ErrorDesc 
78
  END catch 
79
----202175