我在C和PRO * C中比较大,需要一些帮助。我的结构如下:
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)
}
和帖子功能是:
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
}
“数组中的值”应该是什么?!
非常感谢!
答案 0 :(得分:2)
如果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);
(来自PRO * C上的docs.oracle.com)
所以在这里我认为你可以简单地使用:
values (:s_no )
如果这不起作用,则意味着您必须指定字符串的大小(我认为您应该这样做,因为您的列的大小不是无限的)