我是C和PRO*C的biginner,需要一些帮助。我有一个如下的结构:
typedef struct pt_st{
char (*s_no)[100];
char (*s)[100];
} pt_st;
有一个像c_info这样调用post函数的函数:
int c_info(pt_st ir_st)
{
int li_result = 0;
li_result = post(ir_st.s_no)
}
和post函数是:
int post(char (*s_no)[100])
{
EXEC SQL FOR 100
insert into table_1(col1)
values(values from the array); //I want to read one value each time in the loop and insert
}
"来自数组的值"应该是什么?
多谢!
如果s_no
为char (*)[100]
类型,则s_no[i]
为char*
类型。
要将其作为数组插入,可以使用Host arrays:
可以在INSERT语句中使用主机数组作为输入变量。只要确保您的程序之前用数据填充数组即可执行INSERT语句
如果数组中的某些元素是不相关的,可以使用FOR子句来控制插入的行数。参见"使用FOR"条款"。
使用主机数组插入的示例如下:
char emp_name[50][20]; int emp_number[50]; float salary[50]; /* populate the host arrays */ EXEC SQL INSERT INTO EMP (ENAME, EMPNO, SAL) VALUES (:emp_name, :emp_number, :salary);
(From docs.oracle.com on PRO*C)
所以这里我认为你可以简单地使用:
values (:s_no )
如果这不起作用,这意味着你必须指定你的字符串的大小(我认为你应该,因为你的列不是无限的大小)