如何将传递的指针用于字符数组?

时间:2015-05-27 13:00:17

标签: c oracle-pro-c

我在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
}

“数组中的值”应该是什么?!

非常感谢!

1 个答案:

答案 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 )

如果这不起作用,则意味着您必须指定字符串的大小(我认为您应该这样做,因为您的列的大小不是无限的)