【问题标题】:ORA-00933: oracle 8iORA-00933: 甲骨文 8i
【发布时间】:2017-01-18 11:25:11
【问题描述】:

我想在 Oracle 8i 中使用 join。我的查询如下。 我有使用join 从两个表中获取数据的查询,但我收到错误SQL command not properly ended

    private List<StamfordProdRelease> GetStamfordProdReleases()
    {
        List<StamfordProdRelease> list = null;

        string srtQry = "SELECT NVL(NULL, 0) ID," +
        "                DLOG.RELEASEID AS RELEASE_BUILD," +
        "                TRUNC (DLOGDET.DEPLOYDATE) AS PROD_DEPLOY_DATE," +
        "                DLOGDET.DEPLOYREQUEST AS BAAR_RFD," +
        "                DLOG.FILENAMEEXT_VC AS SCRIPT_NAME," +
        "                DLOG.VERSION," +
        "                DLOG.REQUEST," +
        "                DLOG.NOTE AS COMMENTS" +
        "                FROM ADM_DEPLOYMENTLOGDETAIL DLOGDET" +
        "                JOIN ADM_DEPLOYMENTLOG DLOG ON DLOG.LOGNO = DLOGDET.LOGNO;";

        using (OracleConnection conn = new OracleConnection(Globals.Constants.AppConnectionStringReadOnly))
        {
            using (OracleCommand objCommand = new OracleCommand(srtQry, conn))
            {
                objCommand.CommandType = CommandType.Text;
                DataTable dt = new DataTable();
                OracleDataAdapter adp = new OracleDataAdapter(objCommand);
                conn.Open();
                adp.Fill(dt);
                if (dt != null)
                {
                    list = ConvertToStamfordProdRelease(dt).ToList();
                }
            }
        }
        return list;
    }

我的目标是向表中插入记录。

【问题讨论】:

  • 删除“;”来自查询
  • 为什么不接受答案?

标签: sql join oracle8i


【解决方案1】:

将所有内容保存在一组 " 中,并且您只需要一个 ; 即可在双引号之外结束 SQL 查询。

    private List<StamfordProdRelease> GetStamfordProdReleases()
    {
        List<StamfordProdRelease> list = null;

        string srtQry = "SELECT NVL(NULL, 0) ID, 
DLOG.RELEASEID AS RELEASE_BUILD, 
TRUNC (DLOGDET.DEPLOYDATE) AS PROD_DEPLOY_DATE, 
DLOGDET.DEPLOYREQUEST AS BAAR_RFD, 
DLOG.FILENAMEEXT_VC AS SCRIPT_NAME, 
DLOG.VERSION, 
DLOG.REQUEST, 
DLOG.NOTE AS COMMENTS 
FROM ADM_DEPLOYMENTLOGDETAIL DLOGDET 
JOIN ADM_DEPLOYMENTLOG DLOG ON DLOG.LOGNO = DLOGDET.LOGNO";

        using (OracleConnection conn = new OracleConnection(Globals.Constants.AppConnectionStringReadOnly))
        {
            using (OracleCommand objCommand = new OracleCommand(srtQry, conn))
            {
                objCommand.CommandType = CommandType.Text;
                DataTable dt = new DataTable();
                OracleDataAdapter adp = new OracleDataAdapter(objCommand);
                conn.Open();
                adp.Fill(dt);
                if (dt != null)
                {
                    list = ConvertToStamfordProdRelease(dt).ToList();
                }
            }
        }
        return list;
    }

【讨论】:

    【解决方案2】:

    Oracle 8i 不支持标准 ANSI SQL JOIN 语法。

    该功能是在 Oracle 9i 第 2 版(又名 Oracle 9.2)中引入的

    Quote from the chapter "What's New in SQL Reference"

    SELECT [...] 具有符合 ANSI 的新连接语法。

    【讨论】:

      【解决方案3】:

      不要将所有的字符串组合在一起。

      【讨论】:

        猜你喜欢
        • 2010-10-05
        • 2021-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多