尝试使用批量复制将SQL Server表导出到void n(FILE *f, int *pocet, char **spz) {
int i = 0;
int pocett = 0;
char* r = (char*)malloc(50 * sizeof(char));
if (spz != NULL) {
free(spz);
}
spz = (char**)malloc(sizeof(char*));
if (f == NULL) {
printf_s("File is null");
return;
}
while (fgets(r, 50, f)) {
switch (i % 6) {
case 1: {
if (i == 1) {
spz[0] = (char*)malloc(50 * sizeof(char));
spz[0] = r;
}
else {
spz = (char**) realloc(spz,((i - 1) / 6 + 1) * sizeof(char*));
spz[((i - 1) / 6)] = (char*)malloc(50 * sizeof(char));
strcpy_s(spz[(i-1)/6], 50 ,r);
}
break;
}
case 5: {
pocett++;
break;
}
}
i++;
}
*pocet = ++pocett;
}
文件时,会发生以下错误:
将varchar值转换为数据类型int时转换失败。
无法解析列级排序规则
复制开始,然后抛出错误。
编辑: 现在我把它作为输出......
int main() {
FILE *f = NULL;
int c;
int pocet = 0;
int* p = &pocet;
char** spz = NULL;
while ((c = getchar()) != 'k') {
getchar();
switch (c) {
case 'v': {
v(&f);
break;
}
case 'o': {
//printf_s("AHOJ\n");
break;
}
case 'n': {
n(f, p, spz);
break;
}
case 's': {
s(spz, *p);
break;
}
case 'p': {
printf_s("AHOJ\n");
break;
}
case 'z': {
printf_s("AHOJ\n");
break;
}
default: {
printf_s("Skus znova\n");
break;
}
}
}
return 0;
}
答案 0 :(得分:-1)
评论太长了:
我想我明白你要用
做什么SELECT @ColumnHeader = COALESCE(@ColumnHeader, ',', '') + '''' + 'name' + ''''
FROM INFORMATION_SCHEMA.COLUMNS AS C
WHERE C.TABLE_NAME = @Table_Name
但你真的尝试过吗?
结果@ColumnHeader
看起来像:
,'name''name''name''name'
。
你说"隔离查询执行得很好"。我怀疑。
我认为你的意思是:
SELECT @ColumnHeader = COALESCE(@ColumnHeader + ',', '') + QUOTENAME(C.COLUMN_NAME, '''')
FROM INFORMATION_SCHEMA.COLUMNS AS C
WHERE C.TABLE_NAME = @Table_Name