循环数据表时出现问题<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有一个基于SQL查询的数据表。我想循环遍历数据表,并根据原始数据表中的值创建和执行新的sql语句。
出于某种原因,似乎首先使用变量名称创建sql语句两次,然后使用实际的variabel值创建sql语句。下面我有代码和代码执行时日志的结果。任何有关该问题的提示/解释都非常感谢。
BR
汉斯
来自这里的代码:
dtMonitor = DatabaseOpslag(“SELECT distinct trial_no,trial_unit_reference FROM table”);
对于(I = 1,I <= NROWS(dtMonitor)中,i ++,
显示(:trial_no );
显示(:trial_unit_reference );
显示(“SELECT语句,其中IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE喜欢'PD%'和IMPACT_ALL_ISSUES.trial_no =”|| Char(EVAL(:trial_no) ))||“和IMPACT_ALL_ISSUES.trial_unit_reference like”|| Char(EVAL(:trial_unit_reference) ))|| “”);
);
/ *:
从这里记录:
:TRIAL_NO = 3748;
:TRIAL_UNIT_REFERENCE =“822”;
“SELECT PRIMARY_INVESTIGATOR,COUNTRY_NAME,IMPACT_ALL_ISSUES.TRIAL_UNIT_REFERENCE,PATIENT_ENTRY_NO,ISSUE_CATEGORY_DESC,ISSUE_TITLE,ISSUE_DESC,ISSUE_ACTION,GCP_ISSUE,ISSUE_CREATED_BY_FORENAME,ISSUE_CREATED_BY_SURNAME,CREATED_DATE,CLOSED_DATE,ISSUE_RESOLVED FROM IMPACT_ALL_ISSUES INNER JOIN IMPACT_UNIT_LEVEL ON(IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY)AND(IMPACT_ALL_ISSUES。TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO)其中IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE类似'PD%'和IMPACT_ALL_ISSUES.trial_no =“||字符(EVAL(:TRIAL_NO ))|| “和IMPACT_ALL_ISSUES.trial_unit_reference一样”||字符(EVAL(:TRIAL_UNIT_REFERENCE ))|| “”=“SELECT PRIMARY_INVESTIGATOR,COUNTRY_NAME,IMPACT_ALL_ISSUES.TRIAL_UNIT_REFERENCE,PATIENT_ENTRY_NO,ISSUE_CATEGORY_DESC,ISSUE_TITLE,ISSUE_DESC,ISSUE_ACTION,GCP_ISSUE,ISSUE_CREATED_BY_FORENAME,ISSUE_CREATED_BY_SURNAME,CREATED_DATE,CLOSED_DATE,ISSUE_RESOLVED FROM IMPACT_ALL_ISSUES INNER JOIN IMPACT_UNIT_LEVEL ON(IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY)AND (IMPACT_ALL_ISSUES.TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO)其中IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE如'PD%'和IMPACT_ALL_ISSUES.trial_no = 3748和IMPACT_ALL_ISSUES.trial_unit_reference如822“;
Re:循环访问数据表时出现问题创建新表时以及单击其他表时,JMP的当前数据表将更改。 使用显式表引用而不是依赖于当前数据表是个好主意。
Craige
Re:循环访问数据表时出现问题谢谢你帮助我的努力。使用表作为前缀有所不同。
Re:循环访问数据表时出现问题这就是诀窍 - 谢谢你
所以只是为了我的理解/学习:当我尝试引用变量时,jmp对我所指的数据表感到困惑?但是表格作为前缀解决了吗?
Re:循环访问数据表时出现问题我刚刚将用于Oracle ODBC SQL的错误捕获实用程序发布到文件交换。 点击这里看见了。 它特定于Oracle,但可以适用于其他数据库。
Re:循环访问数据表时出现问题 C Hales 是正确的。 但是你的表变量是 dtmonitor ,不是dt。 您希望循环中的sql语句中包含以下内容:
dtmonitor : trial_no [ 一世 ]
和
dtmonitor : TRIAL_UNIT_REFERENCE [ 一世 ]
Re:循环访问数据表时出现问题JMP中的错误消息需要在第一次看到时解释一下:
名称未解决:在试用或评估'trial_no'时的trial_no,:trial_no / * ### * /
那是什么问题,但在哪里?下一行告诉您如何标记错误:
在以下脚本中,错误标记为/ * ### * /
D1 = Dialog(“prompt”,Monitor = edittext(“Monitor initials”));
... 跳过一堆脚本,找到...
|| Char(:trial_no / * ### * / )||
我认为JMP的数据表没有列“trial_no”。 如果有多个数据表,则可以使用dt:trial_no明确表格以查找变量。
Re:循环访问数据表时出现问题对不起傻的错误:-)
我已经更正了拼写,当我运行脚本并且只显示sql语句时,看起来语句是按预期生成的。但是当我尝试将sql语句传递给一个进行db查询并将结果放入表的函数时,该函数只执行一次然后抛出错误。我做了一个日志,我只显示sql语句(logshow.jsl)和我尝试执行的语句(logexecute.jsl)。
我是jmp脚本的新手,所以我不知道该怎么办?
Re:循环访问数据表时出现问题你错过了第一个 Ë 在sql_statement中。
改变这个:
节目 ( sql_statment ) ;
对此:
节目 ( sql_statement ) ;
Re:循环访问数据表时出现问题感谢您查看此内容,但我仍然无法生成我尝试查看以下日志代码的sql语句:
代码形式在这里:
dtMonitor = DabaseOpslag ( “SELECT distinct trial_no,trial_unit_reference FROM IMPACT_MONITOR_WORKLOAD其中用户名如'”|| Monitor ||“'和site_closed_date为null” ) ;
对于 ( I = 1,I <= NROWS ( dtMonitor ) 我++,
sql_statement =“SELECT PRIMARY_INVESTIGATOR,COUNTRY_NAME,IMPACT_ALL_ISSUES.TRIAL_UNIT_REFERENCE,PATIENT_ENTRY_NO,ISSUE_CATEGORY_DESC,ISSUE_TITLE,ISSUE_DESC,ISSUE_ACTION,GCP_ISSUE,ISSUE_CREATED_BY_FORENAME,ISSUE_CREATED_BY_SURNAME,CREATED_DATE,CLOSED_DATE,ISSUE_RESOLVED FROM IMPACT_ALL_ISSUES INNER JOIN IMPACT_UNIT_LEVEL ON(IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY)AND( IMPACT_ALL_ISSUES.TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO)其中IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE类似'PD%'和IMPACT_ALL_ISSUES.trial_no =“|| Char ( :trial_no [ 一世 ]) ||“和IMPACT_ALL_ISSUES.trial_unit_reference like”|| Char ( :trial_unit_reference [ 一世 ]) || “”;
节目 ( sql_statment ) ;
) ;
/ *:
记录响应:
名称未解析:sql_statment访问或评估'sql_statment',sql_statment / * ### * /
Re:循环访问数据表时出现问题是的,show()最适合使用简单的变量名。 复杂的表达会产生令人困惑的答案。
Re:循环访问数据表时出现问题您可以删除EVAL。 将SQL语句设置为等于变量,然后显示变量:
对于 ( 一世 = 1 ,一世 <= NROWS ( dtMonitor ) ,一世 ++,
节目 ( : trial_no [ 一世 ]) ;
节目 ( : trial_unit_reference [ 一世 ]) ;
sql_statement =
“SELECT声明
其中IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE喜欢'PD%'
和IMPACT_ALL_ISSUES.trial_no =“ || 烧焦 ( : trial_no [ 一世 ]) || “
和IMPACT_ALL_ISSUES.trial_unit_reference一样“ || 烧焦 ( : trial_unit_reference [ 一世 ]) ;
节目 ( sql_statement ) ;
) ;