루프로 변수 데이터 테이블 그립 생성안녕 모두
여러 테이블 이름으로 SQL () 데이터 테이블을 실행하는 루프를 작성했습니다. 데이터 테이블을 관리하기 위해 각 테이블에 대한 그립을 만들려고 시도했지만 실패했습니다.
아래와 같이 모든 사람들이 코드에 도움을 필요로
sql_code 1 = Expr( "..." );
sql_code 2 = Expr( "..." );
sql_code 3 = Expr( "..." );
list = { "sql_code 1", "sql_code 2", sql_code 3" };
For( k = 1, k <= N Items( list ), k++,
sub_list = list[k];
Eval list( Parse( "var_" || sub_list ) ) = Execute SQL( database_connection, Eval(Parse(list)), invisible, "Data Table_" || sub_list );
);좋은 하루 되세요
다시 : 루프로 변수 데이터 그립을 생성 Black ,
스크립트에 몇 가지 문제가있었습니다.
- 실제 SQL은 문자열 / 문자 변수 여야합니다.
- 마지막 아이템 명부 따옴표가 없습니다.
- For 루프 내에서 생성하려는 명령 행에 누락 된 개념
JMP 과제의 왼쪽은 L 값 . 본질적으로 L- 값은 단어가 아니거나 표현이 아닌 이름이어야합니다.
그러나 과제의 왼쪽 (=의 왼쪽)이 이름 인 JMP 명령을 만들려고한다고 생각합니다.
아래는 JMP 로그 창입니다
Parse(Eval Insert( "\[var_^sub_list^ = Execute SQL( database_connection, ^list[k]^, invisible, "Data Table_^sub_list^")]\" )) ;
/*:
var_sql_code 1 = Execute SQL(
database_connection,
sql_code 1,
invisible,
"Data Table_sql_code 1"
)
맨 위 줄은 유효한 JMP 식을 생성합니다. 이것이 Eval () 함수의 인수로 사용되고 데이터베이스 연결 문자열과 SQL 코드에 오류가 없으면 쿼리가 작동해야합니다. 아래 스크립트를 참조하십시오.
JMP 기본 메뉴에서 JSL 기능을 이해하는 데 도움이되도록> 도움 > 스크립팅 인덱스 > 기능 을 찾아보십시오.
- 평가 삽입 ()
- 파싱 ()
- 평가 () 및
- Execute SQL () 구문
sql_code 1 = "..." ;
sql_code 2 = "..." ;
sql_code 3 = "..." ;
list = { "sql_code 1", "sql_code 2", "sql_code 3" };
For( k = 1, k <= N Items( list ), k++,
sub_list = list[k];
Eval(Parse(Eval Insert( "\[var_^sub_list^ = Execute SQL( database_connection, ^list[k]^, invisible, "Data Table_^sub_list^")]\" )) ) ;
);
희망이 도움이됩니다. 행운을 빕니다!
다시 : 루프로 변수 데이터 그립을 생성각 SQL 결과 테이블에 대해 동적 변수 이름을 작성하기 위해 모든 기계 조작을 수행하는 대신 테이블 목록을 작성하는 것이 어떻습니까? 특히 SQL 문이 복잡한 경우.
sql_code 1 = Expr( "..." );
sql_code 2 = Expr( "..." );
sql_code 3 = Expr( "..." );
list = { "sql_code 1", "sql_code 2", "sql_code 3" };
dt_list = {};
For( k = 1, k <= N Items( list ), k++,
sql_statement = list[k];
dt_list[k] = Execute SQL( database_connection, sql_statement, invisible, "Data Table_" || char(k) );
);
SQL 문이 새로 작성된 테이블의 일부가되도록하려면 테이블 변수로 추가 할 수 있습니다.
다시 : 루프로 변수 데이터 그립을 생성 Black ,
Pete에 전적으로 동의합니다 pm . 목록 항목 순서 (k)와 일치하는 표현식 목록, 목록 열 / 변수, 데이터 테이블 이름 또는 참조 목록은 읽고 유지 관리하기 쉬운 코드이므로 사용하는 것이 좋습니다.
다시 : 루프로 변수 데이터 그립을 생성네. pm gz 확실히 목록은 문자열을 변수로 파싱하는 것보다 낫습니다.
세 테이블 모두에 대해 동일한 작업을 수행하지 않으면 목록에 넣지 않을 것입니다. 설명적인 이름으로 변수의 이름을 지정합니다. 두 번째 예는 줄이 적고 이해하기 쉬우 며 명명 된 변수를 제공하므로 1, 2 및 3 인 테이블을 기억할 필요가 없습니다.
Names default to here(1);
sqllist = {
"SELECT *
FROM People",
"SELECT *
FROM Places",
"SELECT *
FROM Things"
};
table_names = {"People", "Places", "Things"};
dt_list = {};
for(i=1, i<=nitems(sqllist), i++,
dt_list[k] = Execute SQL(dbc, sqllist[i], table_names[i])
);
// vs
dt_people = Execute SQL(dbc,
"SELECT *
FROM People",
"People"
);
dt_places = Execute SQL(dbc,
"SELECT *
FROM Places",
"Places"
);
dt_things = Execute SQL(dbc,
"SELECT *
FROM Things",
"Things"
);
테이블이 모두 동일한 스키마를 가지고 있다면 목록에 sql 문 목록이 있고 직접 호출합니다.