0

我正在编写一个Pro* C函数,它将接受表名并返回存储在其中的值。

select * from <table_name>

现在我们从游标的基本编程中了解到:

DECLARE 
emp_rec emp_tbl%rowtype;
CURSOR emp_cur IS 
SELECT *
FROM 
WHERE salary > 10; 
 BEGIN 
    OPEN emp_cur; 
    FETCH emp_cur INTO emp_rec; 
     dbms_output.put_line (emp_rec.first_name || '  ' || emp_rec.last_name); 
   CLOSE emp_cur; 
END;

在上面的代码中,我们需要table description以便我们可以使用类似的语句

emp_rec.first_name
emp_rec.last_name

假设如果我们不知道表的描述,那么我们如何从游标中获取值。

可能吗。?

4

1 回答 1

0

为了实现上述要求,我为 Pro*C 开发了一个 API,它具有多个函数和内置类,使DB交互使用Pro*C变得非常容易。请参阅CODBC

示例代码:

 int main()
 {
      SQLHelper DB("username","password");
      vector< vector<string> > rowData;
      try
      {
           DB.openDB(); //connect to oracle database
           if(DB.checkDBStatus())  //if connected to database or not
           {
                cout<<"connected"<<endl;
           }
           rowData=DB.selectDB("select to_char(sysdate) from dual"); //fetch all rows in rowData
           if(rowData.size()>0) //to check if rows are fetched or not
           {
                for(int i=0;i<rowData.size();i++) //access each row
                {
                     for(int j=0;j<rowData.at(i).size();j++) //access each column
                     {
                          cout<<rowData.at(i).at(j);
                     }
                     cout<<endl;
                }
           }
           else
           {
                cout<<"No rows fetched"<<endl;
           }
      }
      catch(SQLHelperException sqlExp) //catch any exception during SQL execution
      {
           cout<<sqlExp.getExceptionString()<<endl;
      }
      return 0;
 }

这就是我们如何在不知道其描述的情况下检索任何表的方式。

于 2014-01-15T06:23:42.773 回答