Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
SQLEXEC and Shared Connection Problems
Message
De
11/11/2004 15:40:48
 
 
À
11/11/2004 14:16:48
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 8
OS:
Windows XP SP1
Database:
MS SQL Server
Divers
Thread ID:
00960314
Message ID:
00960622
Vues:
8
Can you debug this end run it well ( i have a CPU 100% )
CLEAR
#define _StatementBusy_ "ConnectBusy"
SQLSETPROP(0,"BatchMode",.T.)
SQLSETPROP(0,"Asynchronous",.F.)
s1=SQLCONNECT('temp_mariano',.T.)
s2=SQLCONNECT(m.s1)

TEXT TO sqlCmd NOSHOW
	CREATE TABLE #TABLE1 (F1 INT IDENTITY,F2 TEXT)
	INSERT #TABLE1 (F2) VALUES (REPLICATE('ciao',1000))
	DECLARE @n INT
	SELECT  @n=1
	WHILE @n<8
	BEGIN
	  SELECT @n=@n+1
	  INSERT #TABLE1 (F2) SELECT F2 FROM #TABLE1
	END
	SELECT * INTO #TABLE2 FROM #TABLE1
	SELECT @@ROWCOUNT n
ENDTEXT

IF SQLEXEC(m.s1,m.sqlCmd,'NUMBER')=1
	? 'Expected ',NUMBER.n
	* end build context

	? SQLSETPROP(m.s1,"Asynchronous",.T.);
	, SQLSETPROP(m.s2,"Asynchronous",.T.)

	=CURSORSETPROP("AllowSimultaneousFetch",.T.,0)
	=CURSORSETPROP("FetchAsNeeded",.F.,0)
	=CURSORSETPROP("FetchSize",10,0)
	waitfree(m.s1)
	? 'Start 1',SQLEXEC(m.s1,"SELECT * FROM #TABLE1","cursor1")
	? 'stmt 1 busy :',SQLGETPROP(m.s1,_StatementBusy_)
	? 'stmt 2 busy :',SQLGETPROP(m.s2,_StatementBusy_)
	*--------------------------------------------
	* try to uncomment the next line !
	* showcursor (m.s1,'cursor1')
	
	waitfree(m.s2)
        * when exect this line , the cpu go to 100%
	? 'Start 2',SQLEXEC(m.s2,"SELECT * FROM #TABLE2","cursor2"),MESSAGE()
	*---------------------------------------------
	? 'stmt 1 busy :',SQLGETPROP(m.s1,_StatementBusy_)
	? 'stmt 2 busy :',SQLGETPROP(m.s2,_StatementBusy_)

	showcursor (m.s2,'cursor2')
	
	*showcursor (m.s1,'cursor1')
	
	DO WHILE INKEY(0.1)#6
		DOEVENTS FORCE
	ENDDO

ENDIF

? SQLCANCEL(m.s2),SQLCANCEL(m.s1)
? SQLDISCONNECT(m.s2),SQLDISCONNECT(m.s1)

PROCEDURE showcursor (s,c)
	tout=DATETIME()+20
	DO WHILE m.tout>DATETIME() AND !USED(m.c)
		=SQLEXEC(m.s) 
		DOEVENTS FORCE
	ENDDO
	IF USED(m.c)
		SELECT (m.c)
		BROWSE NOWAIT
	ENDIF

PROCEDURE waitfree(s)
	DO WHILE SQLGETPROP(m.s,_StatementBusy_)
		DOEVENTS FORCE
	ENDDO
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform