[英]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.