임시 테이블을 사용하여 SQL 가져오기<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JMP 11.2.1에서 저장 프로시저 및 임시 테이블을 사용하는 데 어려움을 겪고 있습니다.나는 단순히 돌려받지 못한다.
db = 데이터베이스 생성 Connection("DRIVER=SQL Server;
서버=로컬서버\SQLEXPRESS;
DATABASE=테스트"
);
SQL(db,
"
CREATE TABLE #테스트(ID int)
INTO #테스트(ID) 삽입
값 (1), (2), (3), (4), (5)
고르다 *
#테스트에서
DROP TABLE #테스트
",
":-("
);
데이터베이스 연결 닫기(db);
이 문제는 한동안 저를 괴롭혔습니다.그것의 모양에서 SAS는 그것을 할 수 있으므로 ODBC의 문제라고 생각하지 않습니다.
Re: 임시 테이블을 사용하여 SQL 가져오기빈스,
감사.이전 ODBC 2.0 다운로드를 찾는 것이 합리적입니까?나는 아직 운이 별로 없다.
Re: 임시 테이블을 사용하여 SQL 가져오기내가 이해한 바에 따르면 이것은 JMP 측에서 수정할 수 없습니다.문제는 ODBC 3.0용 드라이버가 호출하는 방식이라는 점에서 Microsoft 측에 있습니다.그들은 당신이 말했듯이 #Tables를 감지하려고 할 수 있지만 내 SQL이 허용되지 않는 방식으로 작성되었음을 알려주는 스크립트를 중단하고 싶지는 않습니다.로그에 무언가를 전달하면 유용하다는 것을 알 수 있습니다.
Re: 임시 테이블을 사용하여 SQL 가져오기각 쿼리 부분의 결과를 리터럴 JMP 데이터 테이블로 저장한 다음 JSL 내에서 수동으로 조인하면 어느 정도 작동하는 것으로 보입니다.시간을 많이 잡아먹을 수 있지만 Close Data Table을 실행할 때까지 결과를 활성 상태로 유지할 수 있습니다.
Re: 임시 테이블을 사용하여 SQL 가져오기설명 감사합니다.그러나 이것이 작동하는 방식이 마음에 들지 않습니다.나는해야한다 간단히 다른 응용 프로그램에서 잘 실행되는 쿼리를 받을 수 있고 JMP/JSL 내에서 실행될 때 동일한 결과를 보고/기대할 수 있습니다.
이 스레드를 읽었지만 한 가지는 분명합니다... 논의된 해결 방법, 즉 모든 임시 테이블을 별도의 쿼리로 분할하는 것은 JSL 개발자에게 좋은 솔루션이 아닙니다.나는 잘 작동하는 크고 오래된 쿼리를 가지고 있으며 문자 그대로 그것을 분할하는 데 몇 시간이 걸릴 것입니다.그게 무슨 소용이야?이것이 어떻게 선호되는 방법입니까?또한 첫 번째 쿼리 분할 시도에서 JMP가 OID를 새 데이터 테이블에 로드하지 않는다는 사실도 알게 되었습니다.따라서 이 쿼리를 분리할 수 있는지 잘 모르겠습니다.계속하면 빈 OID 열에 조인할 수 없습니다....SQL Server를 통해 이 동일한 쿼리 부분을 실행할 때 내 열에 데이터가 있습니다.
저도 이 주제에 놀랐습니다 어려운 찾으려면 몇 가지 Google 검색이 필요했습니다.제한 사항은 JSL 매뉴얼에 명확하게 명시되어 있어야 하지만 처음으로 읽었습니다.나는 특별히 몇 가지 도우미 함수를 작성했습니다. 지금은 별로 도움이 되지 않습니다.시간낭비였다는 걸 이제야 깨달았다.실제로 다른 응용 프로그램을 사용하여 csv에 쓰고 JMP에서 로드하도록 하는 것이 더 빠릅니다.이 소프트웨어는 저렴하지 않으므로 시간을 절약하기 위해 외부 앱이 필요하지 않고 Temp Tables/SQL이 JMP에서 작동할 것으로 기대합니다.
최소한 이 애플리케이션은 더 나은 알림을 제공할 것으로 기대합니다.JMP가 JSL 또는 "Open Table > Advanced" 플랫폼 내에서 임시 테이블 사용을 감지하는 경우 메시지 ~해야 한다 JMP가 작업을 처리할 수 없다는 사실을 개발자에게 알리기 위해...?
이 스레드는 더 이상 활성화되지 않습니다... SAS/JMP는 이 문제를 해결할 계획입니까?
Re: 임시 테이블을 사용하여 SQL 가져오기당신의 잘못이 아닐 수도 있습니다.JMP 12에는 저장 프로시저가 JMP에 행을 반환하지 않는 버그가 있습니다(솔직히 Brian이 어떻게 작동하는지 잘 모르겠습니다).12.1 유지 관리 릴리스에서 수정될 예정이며 몇 개월 후에 나올 예정입니다.
업데이트 : 나는 혼란스러웠다.행을 반환하지 않는 저장 프로시저와 관련된 버그는 실제로 JMP 12에서 *아닙니다* - JMP 12.1 주기 내에서 도입 및 수정되었습니다.따라서 저장 프로시저 코드를 확인해야 할 수도 있습니다.테이블이 생성된 다음 행이 JMP로 반환되지 않는 단일 저장 프로시저 내에서 선택되는 시나리오를 보았습니다.
에릭
Re: 임시 테이블을 사용하여 SQL 가져오기고마워 브라이언, 내가 잘못 불렀음에 틀림없다.
Re: 임시 테이블을 사용하여 SQL 가져오기안녕 빈스,
저장 프로시저의 문제를 알지 못합니다.SQL Server에 대한 좋은 예가 많지 않지만 여기에서 작업할 수 있었습니다.인용이 큰 문제라는 것을 압니다.당신은 무엇을보고 있습니까?
브라이언
Re: 임시 테이블을 사용하여 SQL 가져오기정말 유익한 정보를 준 Brian에게 감사합니다.
저장 프로시저도 실패하게 만드는 동일한 문제입니까?
Re: 임시 테이블을 사용하여 SQL 가져오기안녕 빈스,
답변이 늦어서 죄송합니다만, 이에 대해 조사를 좀 하고 싶었습니다.불행히도 이것은 Microsoft SQL Server ODBC 드라이버(Native Client 및 Office 버전 모두)의 문제인 것 같습니다.SQL을 제출할 때 테이블 생성이 자동으로 실패합니다.Mac용 Actual Technologies SQL Server 드라이버와 같은 드라이버를 사용하면 문제 없이 성공합니다.JMP의 이전 버전에서는 이것이 작동할 것이라는 것을 알고 있습니다. 당시 우리는 ODBC 3.0을 시행하지 않았기 때문입니다. 이 수준은 SQL Server 및 기타 데이터베이스 공급업체 내에서 블록 가져오기를 활용하는 데 필요합니다.블록 가져오기를 사용하면 큰 테이블을 훨씬 더 빠르게 검색할 수 있습니다.그러나 이로 인해 TEMP 테이블이 실패하게 됩니다.이 초기화는 JMP 시작 시 수행되므로 TEMP 테이블 사용을 감지하기 위해 SQL을 구문 분석할 수 있더라도 TEMP 테이블에 대해 선택적으로 비활성화하는 것은 실제로 불가능합니다.
더 좋은 소식을 전할 수 있었으면 좋겠습니다.
브라이언 코르코란
JMP 개발
Re: 임시 테이블을 사용하여 SQL 가져오기그러면 이 문제에 대해서는 SQL Server 전문가에게 맡겨야 합니다.
Re: 임시 테이블을 사용하여 SQL 가져오기#이 없으면 임시 테이블이 아닙니다.
SQL SERVER에서 올바르게 작동합니다.
Re: 임시 테이블을 사용하여 SQL 가져오기저는 SQL 서버 전문가가 아닙니다. 저는 주로 Oracle을 사용합니다.SQL 서버가 테이블 이름을 좋아하지 않는 것 같습니다.#Test 대신 Test를 사용해 보세요.
SQL Server 콘솔에서 SQL 명령의 유효성을 검사했습니까?
Re: 임시 테이블을 사용하여 SQL 가져오기Execute가 완료되자마자 제거되는 것처럼 보입니다.
[Microsoft][ODBC SQL Server 드라이버][SQL Server]잘못된 개체 이름 '#Test'입니다.
[Microsoft][ODBC SQL Server 드라이버][SQL Server]잘못된 개체 이름 '#Test'입니다.
[Microsoft][ODBC SQL Server 드라이버][SQL Server]'#Test' 테이블이 존재하지 않거나 권한이 없기 때문에 삭제할 수 없습니다.
Re: 임시 테이블을 사용하여 SQL 가져오기각 SQL 문을 분리해 보십시오.
DB = 데이터베이스 연결 생성 ( "드라이버=SQL 서버;
서버=로컬서버\SQLEXPRESS;
DATABASE=테스트"
) ;
SQL1 = "CREATE TABLE # 테스트(ID int)" ;
SQL 실행 ( DB , SQL1 ) ;
SQL2 = "INSERT INTO #Test (ID) VALUES (1), (2), (3), (4), (5)" ;
SQL 실행 ( DB , SQL2 ) ;
SQL3 = "SELECT * FROM #테스트" ;
dt = SQL 실행 ( DB , SQL3 , "#테스트" ) ;
SQL4 = "DROP TABLE #테스트" ;
SQL 실행 ( DB , SQL4 ) ;
데이터베이스 연결 닫기 ( DB ) ;