我正在写一个 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
假设我们不了解表的描述,那么我们如何从游标中获取值。
有可能。?
答案 0 :(得分: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;
}
这就是我们如何在不知道描述的情况下检索任何表格。