2009-09-02 28 views
0
please let me know the issue with following script (sql,oracle 10g) 

    1 DECLARE @colname AS NVARCHAR(50) 
    2 DECLARE @tablename AS NVARCHAR(500) 
    3 DEClARE @query AS NVARCHAR(500) 
    4 SET @colname = 'select wk_units1 from cnt_sls_dm.fct_sales_summary' 
    5 SET @tablename = 'SELECT tablename from dmi_user.fct_sales_meta' 
    6 set @query='select '[email protected]+' FROM '[email protected]+' 
    7* EXECUTE sp_executesql @query 
SQL>/
ERROR: 
ORA-01756: quoted string not properly terminated 
+4

這不是一個T-SQL(MS SQL)查詢? – 2009-09-02 12:10:11

回答

2

更改線路6

set @query='select '[email protected]+' FROM '[email protected] 
+1

他實際上試圖在'Oracle'中運行'SQL Server'查詢。 – Quassnoi 2009-09-02 12:12:07

+0

你好我收到以下錯誤,但如果我運行查詢saperatley他們在第1行給出的結果的一個記錄 錯誤: ORA-01403:找不到數據 ORA-06512:在第10行 – Irveen 2009-09-02 12:26:29

+0

@Quassnoi,錯過了,太早了:( – RedFilter 2009-09-02 12:41:31

5

這個錯誤是相當自我描述,你有一個未終止的報價。

您正在嘗試運行Oracle中的SQL Server代碼。這不起作用。

您不能僅僅通過複製將T-SQL轉換爲PL/SQL

我更正了語法,但很可能您需要比這更多的工作。

DECLARE 
    colname NVARCHAR2(50); 
    tname NVARCHAR2(500); 
    query NVARCHAR2(500); 
BEGIN 
    SELECT wk_units1 
    INTO colname 
    FROM cnt_sls_dm.fct_sales_summary; 
    SELECT tablename 
    INTO tname 
    FROM dmi_user.fct_sales_meta; 
    query := 'SELECT ' || colname || ' FROM ' || tname; 
END; 
+0

+1,我錯過了Oracle的一部分! – RedFilter 2009-09-02 12:32:01

0

這看起來很像tSql,而不是pl SQl,你可能想用||連接Oracle和varchar2中的字符串而不是nvarchar

0

以下是正確的方式來回答問題........ 運行良好.......... 感謝所有誰幫助......

-Irveen

DECLARE 
    type fct_sales_summary_cur is table of dmi_user.fct_sales_summary_cmp_1%rowtype index by binary_integer; 
    cur_rec fct_sales_summary_cur; 
      colname NVARCHAR2(50); 
      tname NVARCHAR2(500); 
      query VARCHAR2(500); 
      cnt  number:=1; 
    BEGIN 
      loop 
      SELECT colname 
      INTO colname 
      FROM dmi_user.FCT_SALES_META 
      where sno=cnt; 
      SELECT tablename 
      INTO tname 
      FROM dmi_user.fct_sales_meta 
      WHERE sno=cnt; 
      --query:='select * from dmi_user.fct_sales_summary_cmp'; 
      query := 'SELECT '|| colname ||' FROM '||tname; 
      -- dbms_output.put_line(colname); 
      -- dbms_output.put_line(tname); 
      --dbms_output.put_line(query); 
      execute immediate query bulk collect into cur_rec; 
      --dbms_output.put_line(cur_rec); 
      dbms_output.put_line('------Table-Sno -----' || cnt); 
      for i in cur_rec.first..cur_rec.last loop 
      dbms_output.put_line(cur_rec(i).wk_units1); 
      end loop; 
      cnt:=cnt+1; 
    exit when cnt=4; 
    end loop; 
    END; 
/