Oracle 中的查询错误
Error with the query in Oracle
我正在使用 Oracle
并在我的 toad 中使用来检查结果是什么。但是我收到错误消息
ORA-01740: missing double quote in identifier
这是我的查询
SELECT T1.Project_Id,
PROPERTY_NAME Project_name,
T1.Vehicle_No,
T1.Creation_date,
T1.Time_In,
T1.Time_Out
FROM
XXCUS.XX_SUPINV T1
INNER JOIN XXACL_PN_PROJBUILD_V T2
ON T1.Project_Id = T2.Project_id
WHERE t1.Project_Id = '" + ddlProjectName.SelectedValue + "'
AND Creation_date BETWEEN to_date fnd_conc_date.string_to_date('"TxtIndate.Text"') AND
to_date fnd_conc_date.string_to_date('"txtOutDate.Text"')"
请指出我错在哪里
您似乎在查询末尾有额外的 "
:
to_date fnd_conc_date.string_to_date('"txtOutDate.Text"')" -- here
应该是这样的:
to_date fnd_conc_date.string_to_date('"txtOutDate.Text"')
An initial double quote (") was found without a closing quote. If an
identifier contains a blank or special characters other than $, #, or
_, it must be enclosed in double quotes.
这是您要执行的实际查询(包含数据)。
SELECT T1.Project_Id,
PROPERTY_NAME Project_name,
T1.Vehicle_No,
T1.Creation_date,
T1.Time_In,
T1.Time_Out
FROM
XXCUS.XX_SUPINV T1
INNER JOIN XXACL_PN_PROJBUILD_V T2
ON T1.Project_Id = T2.Project_id
WHERE t1.Project_Id = '409'
AND Creation_date BETWEEN to_date('01-jan-2015','DD-mon-yyyy') AND
to_date('01-jan-2012','DD-mon-yyyy')
您的程序化版本可能是(刚从您的基础版本派生而来)
sl = "SELECT T1.Project_Id,
PROPERTY_NAME Project_name,
T1.Vehicle_No,
T1.Creation_date,
T1.Time_In,
T1.Time_Out
FROM
XXCUS.XX_SUPINV T1
INNER JOIN XXACL_PN_PROJBUILD_V T2
ON T1.Project_Id = T2.Project_id
WHERE t1.Project_Id = '" + ddlProjectName.SelectedValue + "'
AND Creation_date BETWEEN fnd_conc_date.string_to_date('" + TxtIndate.Text+ "') AND
fnd_conc_date.string_to_date('"+ txtOutDate.Text +"')"
To improve readability and avoid SQL*Injection
,you should try
using bind variables( I am not so thorough with the .NET
syntax)
正在将评论变成答案...
您可能要先验证一下,数据确实是从数据库流向您的前端。为此,验证对 return 数据的简化查询,例如 TOAD。然后只需将查询字符串复制到您的应用程序代码,并将其从那里发送到数据库。尝试以下方法:
SELECT
T1.Project_Id,
PROPERTY_NAME Project_name,
T1.Vehicle_No,
T1.Creation_date,
T1.Time_In,
T1.Time_Out
FROM XXCUS.XX_SUPINV T1
INNER JOIN XXACL_PN_PROJBUILD_V T2
ON T1.Project_Id = T2.Project_id
WHERE t1.Project_Id = 409
AND Creation_date BETWEEN TO_DATE('01-jan-2015', 'DD-MON-YYYY')
AND TO_DATE('01-jan-2012', 'DD-MON-YYYY')
如果需要调整/进一步的详细信息,请发表评论。
我正在使用 Oracle
并在我的 toad 中使用来检查结果是什么。但是我收到错误消息
ORA-01740: missing double quote in identifier
这是我的查询
SELECT T1.Project_Id,
PROPERTY_NAME Project_name,
T1.Vehicle_No,
T1.Creation_date,
T1.Time_In,
T1.Time_Out
FROM
XXCUS.XX_SUPINV T1
INNER JOIN XXACL_PN_PROJBUILD_V T2
ON T1.Project_Id = T2.Project_id
WHERE t1.Project_Id = '" + ddlProjectName.SelectedValue + "'
AND Creation_date BETWEEN to_date fnd_conc_date.string_to_date('"TxtIndate.Text"') AND
to_date fnd_conc_date.string_to_date('"txtOutDate.Text"')"
请指出我错在哪里
您似乎在查询末尾有额外的 "
:
to_date fnd_conc_date.string_to_date('"txtOutDate.Text"')" -- here
应该是这样的:
to_date fnd_conc_date.string_to_date('"txtOutDate.Text"')
An initial double quote (") was found without a closing quote. If an identifier contains a blank or special characters other than $, #, or _, it must be enclosed in double quotes.
这是您要执行的实际查询(包含数据)。
SELECT T1.Project_Id,
PROPERTY_NAME Project_name,
T1.Vehicle_No,
T1.Creation_date,
T1.Time_In,
T1.Time_Out
FROM
XXCUS.XX_SUPINV T1
INNER JOIN XXACL_PN_PROJBUILD_V T2
ON T1.Project_Id = T2.Project_id
WHERE t1.Project_Id = '409'
AND Creation_date BETWEEN to_date('01-jan-2015','DD-mon-yyyy') AND
to_date('01-jan-2012','DD-mon-yyyy')
您的程序化版本可能是(刚从您的基础版本派生而来)
sl = "SELECT T1.Project_Id,
PROPERTY_NAME Project_name,
T1.Vehicle_No,
T1.Creation_date,
T1.Time_In,
T1.Time_Out
FROM
XXCUS.XX_SUPINV T1
INNER JOIN XXACL_PN_PROJBUILD_V T2
ON T1.Project_Id = T2.Project_id
WHERE t1.Project_Id = '" + ddlProjectName.SelectedValue + "'
AND Creation_date BETWEEN fnd_conc_date.string_to_date('" + TxtIndate.Text+ "') AND
fnd_conc_date.string_to_date('"+ txtOutDate.Text +"')"
To improve readability and avoid
SQL*Injection
,you should try using bind variables( I am not so thorough with the.NET
syntax)
正在将评论变成答案...
您可能要先验证一下,数据确实是从数据库流向您的前端。为此,验证对 return 数据的简化查询,例如 TOAD。然后只需将查询字符串复制到您的应用程序代码,并将其从那里发送到数据库。尝试以下方法:
SELECT
T1.Project_Id,
PROPERTY_NAME Project_name,
T1.Vehicle_No,
T1.Creation_date,
T1.Time_In,
T1.Time_Out
FROM XXCUS.XX_SUPINV T1
INNER JOIN XXACL_PN_PROJBUILD_V T2
ON T1.Project_Id = T2.Project_id
WHERE t1.Project_Id = 409
AND Creation_date BETWEEN TO_DATE('01-jan-2015', 'DD-MON-YYYY')
AND TO_DATE('01-jan-2012', 'DD-MON-YYYY')
如果需要调整/进一步的详细信息,请发表评论。