执行以下查询时,我面临标题错误。
select to_number('FROM1', 'xxxxxxx') from dual;
错误ORA-01722:无效号码
FROM1
值可以是:
F1F65
F20B5
F204D
请建议解决方案。我需要将这些值转换为数字。例如,使用以下查询将F1F65转换为991077。
select to_number('F1F65', 'xxxxxxx') from dual;
答案 0 :(得分:2)
你应该使用
select to_number(FROM1, 'xxxxxxx') from dual;
否则Oracle将FROM1解释为字符串,而不是变量。
答案 1 :(得分:0)
#include<stdio.h>
struct process {
char na[20];
int at, bt, ft, tat, rem;
float ntat;
} Q[5], temp;
void roundRobin() {
int rr[20], q, x, k;
int f, r, n, i, j, tt = 0, qt, t, flag, wt = 0;
float awt = 0, antat = 0, atat = 0;
printf("Enter the no. of jobs:");
scanf("%d", &n);
for (r = 0; r < n; r++) {
printf("Enter process name,arrival time and burst time:\n");
scanf("%s%d%d", Q[r].na, &Q[r].at, &Q[r].bt);
}
printf("Enter quantum:\n");
scanf("%d", &qt);
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (Q[i].at > Q[j].at) {
temp = Q[i];
Q[i] = Q[j];
Q[j] = temp;
}
}
}
for (i = 0; i < n; i++) {
Q[i].rem = Q[i].bt;
Q[i].ft = 0;
}
tt = 0;
q = 0;
rr[q] = 0;
do {
for (j = 0; j < n; j++)
if (tt >= Q[j].at) {
x = 0;
for (k = 0; k <= q; k++)
if (rr[k] == j)
x++;
if (x == 0) {
q++;
rr[q] = j;
}
}
if (q == 0)
i = 0;
if (Q[i].rem == 0)
i++;
if (i > q)
i = (i - 1) % q;
if (i <= q) {
if (Q[i].rem > 0) {
if (Q[i].rem < qt) {
tt += Q[i].rem;
Q[i].rem = 0;
} else {
tt += qt;
Q[i].rem -= qt;
}
Q[i].ft = tt;
}
i++;
}
flag = 0;
for (j = 0; j < n; j++)
if (Q[j].rem > 0)
flag++;
} while (flag != 0);
printf("\n\n\t\tROUND ROBIN ALGORITHM");
printf("\n***************************");
printf("\nprocesses Arrival time burst time finish time tat wt ntat");
for (f = 0; f < n; f++) {
wt = Q[f].ft - Q[f].bt - Q[f].at;
Q[f].tat = Q[f].ft - Q[f].at;
Q[f].ntat = (float) Q[f].tat / Q[f].bt;
antat += Q[f].ntat;
atat += Q[f].tat;
awt += wt;
printf("\n\t%s\t%d\t\t%d\t%d\t%d\t%d %f", Q[f].na, Q[f].at, Q[f].bt,
Q[f].ft, Q[f].tat, wt, Q[f].ntat);
}
antat /= n;
atat /= n;
awt /= n;
printf("\nAverage tat is %f", atat);
printf("\nAverage normalised tat is %f", antat);
printf("\n average waiting time is %f", awt);
}