簡體   English   中英

將PL / sql轉換為T-SQL

[英]Convert PL/sql to T-SQL

我有以下pl / sql,我想將其轉換為T-SQL。 我用谷歌搜索,但沒有找到任何文章。

DECLARE
    l_retval    VARCHAR2(32767);
    l_rows      VARCHAR2(32767);
BEGIN
    FOR i IN (SELECT  emp.empno AS empno
                     ,emp.ename AS ename
                     ,mgr.empno AS mgr_empno
                     ,mgr.ename AS mgr_ename
              FROM    emp emp
                     ,emp mgr
              WHERE   emp.mgr = mgr.empno(+)
             )
    LOOP
        l_rows := l_rows||'{''emp_empno'':'''||i.empno||''',''emp_ename'':'''||i.ename||''',''mgr_empno'':'''||i.mgr_empno||''',''mgr_ename'':'''||i.mgr_ename||'''},';
    END LOOP;

    l_retval := '['||rtrim(l_rows,',')||']';

    htp.prn(l_retval);
END;

您可以使用游標並獲得以下T-SQL代碼:

DECLARE @l_retval varchar(max) 
   DECLARE @l_rows varchar(max) 
   DECLARE @SWV_I_empno VARCHAR(255) -- data type of column emp.empno 
   DECLARE @SWV_I_ename VARCHAR(255) -- data type of column emp.ename 
   DECLARE @SWV_I_mgr_empno VARCHAR(255) -- data type of column mgr.empno 
   DECLARE @SWV_I_mgr_ename VARCHAR(255) -- data type of column mgr.enam 
   DECLARE @SWV_cursor_var1 CURSOR 
   SET @SWV_cursor_var1 = CURSOR FOR SELECT emp.empno AS empno 
                     ,emp.ename AS ename 
                     ,mgr.empno AS mgr_empno 
                     ,mgr.ename AS mgr_ename 
   FROM emp emp LEFT OUTER JOIN emp mgr ON emp.mgr = mgr.empno 
   OPEN @SWV_cursor_var1 
   FETCH NEXT FROM @SWV_cursor_var1 INTO @SWV_I_empno,@SWV_I_ename,@SWV_I_mgr_empno,@SWV_I_mgr_ename 
   while @@FETCH_STATUS = 0 
   begin 
      SET @l_rows = @l_rows+'{''emp_empno'':'''+@SWV_I_empno+''',''emp_ename'':'''+@SWV_I_ename+''',''mgr_empno'':'''+@SWV_I_mgr_empno+''',''mgr_ename'':'''+@SWV_I_mgr_ename+'''},' 
      FETCH NEXT FROM @SWV_cursor_var1 INTO @SWV_I_empno,@SWV_I_ename,@SWV_I_mgr_empno,@SWV_I_mgr_ename 
   end 
   CLOSE @SWV_cursor_var1 

   SET @l_retval = '['+rtrim(@l_rows)+']' 

   EXECUTE HTP.prn @l_retval

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM