在.net中的oracle中创建表时出现参数错误

在.net中的oracle中创建表时出现参数错误,oracle,parameters,oledbdataadapter,Oracle,Parameters,Oledbdataadapter,我正在使用Oracle10g数据库 Drop Table yassin; Create Table yassin as Select sad_gen.key_dec, sad_gen.key_year, sad_gen.sad_typ_proc, sad_gen.sad_asmt_nber, sad_gen.key_cuo,

我正在使用Oracle10g数据库

    Drop Table yassin; 
Create Table yassin as Select  
              sad_gen.key_dec,
              sad_gen.key_year,
              sad_gen.sad_typ_proc,
              sad_gen.sad_asmt_nber,
              sad_gen.key_cuo,
              sad_gen.sad_reg_nber,
              sad_gen.sad_reg_date,
              sad_gen.sad_asmt_date,
              sad_gen.sad_dec_date,
              sad_gen.sad_exporter,
              sad_gen.sad_stat_val,
              sad_gen.key_nber,
              sad_gen.sad_itm_total,
              sad_gen.sad_pack_total,
              sad_gen.sad_consignee,
              sad_gen.sad_cty_1dlp,
              sad_gen.sad_tra_cty,
              sad_gen.sad_cty_expcod,
              sad_gen.sad_cty_destcod,
              sad_gen.sad_tod_cod,
              sad_gen.sad_cur_cod,
              sad_gen.sad_tot_invoiced,
              sad_gen.sad_tra_cod1,
              sad_gen.sad_mot_bord,
              sad_gen.sad_cuo_bord,
              sad_gen.sad_total_taxes,
              sad_gen.sad_reg_year,
              sad_gen.sad_asmt_year,
              sad_gen.sad_rcpt_nber,
              sad_gen.sad_rcpt_date,
              sad_gen.sad_loc_goods,
              sad_gen.sad_lop_cod,
              sad_gen.sad_whs_time
              FROM   sad_gen
              WHERE  
                    sad_gen.sad_num=:X
                    AND   sad_gen.lst_ope='U';

                    SELECT  *  from yassin;
当我使用它并
在.NET中使用OleDbDataAdabtor设置参数X值时

我得到的错误是
ORA-01036:非法变量名/编号

这是我的职责。 查询是上层查询 Para是保持参数值的sturct 公共数据表GetTable(字符串查询,AsycudParameter[]Para) {

OleDbConnection c=新的OleDbConnection(ConnectionString);
c、 Open();
OleDbDataAdapter da=新的OleDbDataAdapter(查询,c);
对于(int b=0;b
Oracle不允许在DDL中绑定变量。因此,不能在
CREATE TABLE
语句中使用绑定变量。如果确实要创建表,则必须在DDL中硬编码查询(也就是说,可能需要使用字符串连接来构建DDL语句,而不是使用绑定变量)


首先,为什么要在应用程序的运行时创建表?这通常不是您想要做的事情——应该在安装应用程序时创建表,而不是在运行时创建表。

您可以显示.Net代码吗?@ParvizGta-为什么您首先要在运行时创建表?我的第一个建议是不要首先创建表,因为运行时DDL几乎总是一个设计错误。@ParvizGta-我不理解这个注释。您需要在运行时创建一个表,因为您有一个查询编辑器?我看不出两者之间的关系。
    OleDbConnection c = new OleDbConnection(ConnectionString);
    c.Open();

    OleDbDataAdapter da = new OleDbDataAdapter(Query, c);

    for (int b = 0; b < Para.Length; b++)
    {
        if (Query.Contains(Para[b].name))
        {
            if (Para[b].Type == TypeCode.String)
            {
                da.SelectCommand.Parameters.Add(new OleDbParameter(Para[b].name, OleDbType.VarWChar));
                da.SelectCommand.Parameters[da.SelectCommand.Parameters.Count - 1].Value = Para[b].value.ToString();

            }
            if (Para[b].Type == TypeCode.Decimal)
            {
                da.SelectCommand.Parameters.Add(new OleDbParameter(Para[b].name, OleDbType.Decimal));
                da.SelectCommand.Parameters[da.SelectCommand.Parameters.Count - 1].Value = decimal.Parse(Para[b].value.ToString());

            }
        }
    }
    DataTable dt = new DataTable();
    da.Fill(dt);


    c.Close();


    return dt;
}