Você está na página 1de 293

Objetos de conexo de Gupta s bases de dados

20-6204-0004

n c D y I6 7 -e oCoonnnnoencttigngg iuGuupattaapObnjcOcsttiseocCCConnenctaccasiitanseesGsGppataa aO bajjbcatcbtsstsoeosoDattaabbaasssesssr5 -d- x n5 - xno nCcecicnt en g Gpu p tC o Oa jeecctttnCtoonaotnaetetabcOnibnjegsGuusstttaOO Oejejcetcat stotDDG ttaobsbseesse 3 - 1 d- C t G G O Oj b t c s t os n n ecatnaag eG p t o b jb e t t tD D o t a b tggg G t u CG n n ba t ns b s D a a aa s 7 3 -4 C C -n enet n iincG n gt p u bn e jee b j s gtCooDtaatnDitbaiesgGau uep p t Ob tec s t o Daa l atbaa s e I7 2 e 2 3 1 a t b oo u p e i n D

Marcas registradas
Centura, o logotipo de Centura, Centura net.db, colaborador de correia fotorreceptora de Centura, Gupta, o logotipo de Gupta, Gupta pr, o logotipo psto Gupta, fatos rpidos, objeto Nationalizer, procura, QuickObjects, SQL/API, SQLBase, troca de SQLBase, SQLConsole, SQLGateway, SQLHost, SQLNetwork, SQLRouter, SQLTalk, gerente do objeto da equipe, RDM, e Velocis marcas registradas do LLC das tecnologias de Gupta e pode ser registado nos Estados Unidos da Amrica e/ou em outros pases. Todas as marcas registradas TeamWindows, ReportWindows e EditWindows, e a marca registada SQL Windows, so exclusivamente usadas e licenciadas pelo LLC de Gupta Tecnologia. Adobe uma marca registrada de Adobe Systems, incorporada. IBM, OS/2, NetBIOS, e o AIX so marcas registadas de Internacional Negcio Mquinas Corpora. Java e os solaris so marcas registradas de Sun Microsystems, incorporadas. Microsoft, Internet Explorer, o usurio de informao do Internet, o DOS, a vitria 32, Windows, e Visual Basic so marcas registadas ou marcas registradas de Microsoft Corporation nos Estados Unidos da Amrica e/ou em outros pases. O FastTrack e o navegador de Netscape so marcas registradas do corpora de Netscape Communications. Novell uma marca registada, e NetWare uma marca registrada de Novell, incorporada. RoboHELP uma marca registrada de Macromedia Corpora. Todos nomes restantes do produto ou do servio mencionados nisto so marcas registradas ou marcas registadas de seus proprietrios respectivos.

Direitos reservados
2004 dos direitos reservados pelo LLC de Gupta Tecnologia. Todos os direitos reservados.
Objetos de conexo de Gupta s bases de dados

20-6204- 3 de junho de 2004

ndices
Prefcio 9 1 vista geral 1
Arquitetura 1-2 do cliente/usurio Autocommit 1-3 Variveis do ligamento 1-5 Simultaneidade 1-5 Parmetros da conectividade 1-5 Conectar a ordem 1-6 da busca Preservao 1-7 do contexto do cursor O resultado da parte frontal ajusta 1-8 Punhos, contextos, e conexes 1-9 Tipos 1-10 da coluna da IMAGEM Nveis 1-12 da isolao Travar o intervalo de parada 1-14 Anula, cordas vazias, e espaos 1-15 Actualizaes posicionadas 1-17 Modalidade ajustada 1-18 do resultado Palavras-chaves 1-21 de SQL.INI Procedimentos armazenados 1-21 Transaes 1-22

2 inicializando e testando Sua conexo 1


Sumrio de que para fazer 2-2 Antes de conectar 2-2 Configurando uma origem de dados 2-3 de ODBC

Aplicaes de inicializao de SQLWindows 2-5 Testando a conexo 2-8 Conexo a Sybase 2-8 Conexo a Oracle 2-9 Especific a base de dados em sua aplicao 2-10 Problemas da pesquisa de defeitos 2-10 Aplicaes de amostra 2-15

3 conectando a Usurio 1 de Microsoft SQL


Antes de voc comear 3-2 Autocommit 3-2 Preservao 3-2 do contexto do cursor Os tipos de dados suportaram 3-2 Cordas vazias 3-4 Nveis da isolao 3-4 Palavras-chaves como nomes da tabela e de coluna 3-5 Travar o intervalo de parada 3-5 Conectividade nativa 3-5 Actualizaes posicionadas 3-6 Modalidade ajustada 3-6 do resultado AJUSTAR a indicao 3-6 Semntica 3-7 de SqlDirectoryByName Palavras-chaves de SQL.INI 3-7

4 conectando a Oracle 1
Antes de voc comear 4-2 Autocommit 4-2 Preservao 4-2 do contexto do cursor Tipos de dados 4-3 Autoridade 4-3 do DBA PL/SQL dinmico 4-4 Cordas vazias 4-4 Nveis da isolao 4-4

Travar o intervalo de parada 4-5 Trfego de mensagem de aperfeioamento 4-5 Actualizaes posicionadas 4-5 Modalidade ajustada 4-5 do resultado Palavras-chaves de SQL.INI 4-6 Procedimentos armazenados 4-12 Transaes, disconexes, e sadas 4-16 Redigindo os dados CRUS 4-16 Pesquisa de defeitos no linux 4-18

5 conectando a Sybase 1
Antes de voc comear 5-2 Autocommit e transaes acorrentadas 5-2 Variveis do ligamento 5-3 Clusula 5-4 do CLCULO Preservao 5-4 do contexto do cursor Tipos de dados 5-5 Cordas vazias 5-6 Erro que processa 5-6 Come a conexes mltiplas 5-12 Punhos e conexes 5-13 Nveis da isolao 5-13 Actualizaes posicionadas 5-14 Liberando fechamentos 5-16 Cordas reservados 5-16 Palavras-chaves de SQL.INI 5-16 Procedimentos armazenados 5-27 Transaes, disconexes, e sadas 5-36 Redigindo e recuperando os dados 5-37 da IMAGEM e do TEXTO

6 conectando s bases de dados using ODBC 1


Antes de voc comear 6-2 Conectando s origens de dados especficas 6-2

Informao 6-3 do tipo Preservao 6-4 do contexto do cursor Tipos de dados 6-4 Erro que processa 6-5 Cdigo de erro que traa 6-6 Travar o intervalo de parada 6-10 Palavras-chaves de SQL.INI 6-10 Procedimentos armazenados 6-15 Transaes, disconexes, e sadas 6-15 Pesquisa de defeitos no linux 6-16

7 conectando ao mltiplo Bases de dados simultaneamente 1


Vista geral 7-2 Duas aproximaes 7-2 Sobre a aplicao 7-3 Funcionando a aplicao 7-4 Edies de projeto 7-9 Detalhes de execuo 7-25 Come mais informao 7-29

Glossrio 1 ndice 1

Prefcio
Este livro diz-lhe como conectar uma aplicao de Gupta SQLWindows a qualquer de uma variedade de bases de dados: Oracle Usurio de Microsoft SQL Usurio adaptvel de Sybase Alguma base de dados para que um excitador de ODBC certificado para trabalhar com aplicaes de Gupta SQLWindows estiver disponvel. Isto inclui: IBM DB2/400 dBASE-INTERSOLV, excitador do Inc. Excitador de Microsoft Acesso-Microsoft, Inc. Excitador de OracleVisigenic-Visigenic Software, Inc. Este livro igualmente descreve como voc pode certificar seu prprio excitador de ODBC para trabalhar com aplicaes de Gupta SQLWindows using a caracterstica de configurao da conectividade (DCC) da base de dados. Para a informao em como usar o fornecedor VELHO dos dados do DB de SQLBase para conectar SQLBase e aplicaes construdos com o software tal como Visual Basic ou Delphi, ler por favor a conexo a SQLBase na coleo de livro em linha. Para a informao em como usar o colaborador da equipe de Gupta como um consumidor VELHO do DB para conectar aplicaes de SQLWindows a uma variedade de origens de dados, ler por favor o captulo 13 de tornar-se com o manual de SQLWindows na coleo de livro em linha ou estalando aqui.

Connecting Gupta Objects to Databases

2-

Este livro no descreve como conectar uma aplicao de Gupta SQLWindows base de dados de SQLBase s tecnologias de Gupta'. Para a informao, ler o jogo da documentao de SQLBase. Tambm, este livro no descreve como conectar uma aplicao de Gupta SQLWindows s bases de dados DB2 using SQLHost, SQLGateway, e outros componentes do S Q L N e t w o r k p a r a D B 2 ou o S Q L H o s t p a r a V i s u a l B a s i c produto-products read a documentao que acompanha aqueles produtos para mais informao. Este prefcio fornece a seguinte informao: Quem deve ler este manual A organizao deste manual O formato da documentao As convenes da notao usadas neste manual Outros recursos teis Como contatar Gupta

Qu e m de v e le r e ste l i vro
Qualquer um que quer conectar uma aplicao de Gupta SQLWindows a uma das bases de dados alistadas no incio deste prefcio deve ler este livro. Para conectar com sucesso a aplicao a sua base de dados do alvo, voc pode igualmente precisar a ajuda de seu administrador de rede e de administrador de base de dados.

O q u e e s t n e ste l ivro
O captulo 1 d uma vista geral de como as aplicaes de Gupta SQLWindows conectam aos usurios de base de dados. O captulo 2 diz-lhe como inicializar e testar sua conexo base de dados. Os captulos 3 a 7 do-lhe a informaes adicionais sobre a conexo de uma aplicao de Gupta SQLWindows s bases de dados especficas. O captulo 8 descreve como conectar a uma origem de dados de ODBC. Igualmente fala especificamente sobre a conexo a DB2/400 e a dBASE. O captulo 9 discute algumas edies que so importantes quando voc conecta uma nica aplicao de Gupta SQLWindows a mais de uma base de dados ao mesmo tempo. O captulo 10 anda voc com um exemplo de como certificar seu prprio excitador de ODBC.

Connecting Gupta Objects to Databases

2-

Convenes da notao
Antes que voc comece usar este manual, importante compreender as convenes que tipogrficas ns nos usamos neste manual:
Conveno do formato Voc Usurio tipo bold(realce) Correio 9 SQL.INI MAPDLL.EXE Precauo Vital informao Suplementar informao Alt+ 1 Tipo de informao Um colaborador que leia este manual O utilizador final das aplicaes que voc escreve Artigos de menu, teclas, e nomes de campo. Coisas isso voc seleto. Chaves de teclado que voc pressiona. Construtor ou C - exemplo do cdigo de lngua Nomes de programa e nomes da lima

Aviso: Importante: Nota: A mais o sinal entre meios dos nomes chaves pressionar e prender abaixo da primeira chave quando voc pressionar a

Outros recursos teis


Gupta registra em linha. A srie do original de Gupta acessvel em linha. Esta coleo do original deixa-o executar buscas posicionadas com texto completo atravs da srie inteira do original, navegar o ndice using navegador expansvel/dobrvel, ou imprimir todo o captulo. Abrir a coleo selecionando o cone em linha de GuptaBooks do menu do comeo ou double-clicking no cone do lanador no grupo de programa. Ajuda em linha. Este um sistema de ajuda em linha context-sensitive extensivo. A ajuda em linha oferece uma maneira rpida de encontrar a informao em tpicos including artigos de menu, funes, mensagens, e objetos. World Wide Web. O Web site mundial das tecnologias de Gupta' contem a informao sobre scios, produtos, vendas, sustentao, treinamento, e usurios do LLC das tecnologias de Gupta. O URL http://www.guptaworldwide.com. Para alcanar servios tcnicos de Gupta na correia fotorreceptora, ir a http:// www.guptaworldwide.com/tech/support/default.asp. Esta seo de nosso Web site um recurso valioso para clientes com edies do suporte laboral, e enderea uma variedade de tpicos e servios, including o status do caso do suporte laboral, pedido geralmente
1-

Connecting Gupta Objects to Databases

perguntas, acesso aos newsgroup em linha de Gupta, ligaes s ferramentas do Shareware, boletins do produto, Livros Brancos, e actualizaes carregvel do produto. Para a informao no treinamento, including descries de curso, as programaes de classe, e os scios de formao certificados, vo a http://www.guptaworldwide.com/partners/ training.asp. Para a informao extensiva sobre a globalizao e a localizao, o software internacional tornando-se lido para o de Windows 95 e de Windows NT por Nadine Kano da imprensa de Microsoft. Voc pode igualmente alcanar o Web site de Microsoft em http://www.microsoft.com para a informaes adicionais na globalizao e na localizao.
Ou tra s pu b lic a e s.

Emitir comentrios a...


Qualquer um que l este manual pode contribuir-lhe. Se voc tem quaisquer comentrios ou sugestes, emiti-los por favor a: LLC tcnico das tecnologias de Gupta do departamento das publicaes Movimentao de 975 consoles Costas do Redwood, CA 94065 ou emitir o email, com comentrios ou sugestes a: techpubs@guptaworldwide.com

Connecting Gupta Objects to Databases

2-

Captulo 1

Vista geral
Este captulo descreve como conectar aplicaes de Gupta SQLWindows aos usurios de base de dados. Descreve algumas das caractersticas suportadas por umas ou vrias das bases de dados a que voc pode conectar uma aplicao de Gupta SQLWindows. Ler este captulo para come u m a d e s c r i o geral de cada caracterstica, a seguir ler o captulo que cobre a base de dados a que voc est conectando para encontrar se (e como) aquelas caractersticas so suportadas por essa base de dados.
N o t a : Se o captulo que discute uma base de dados particular no menciona uma caracterstica

particular, essa caracterstica no est suportada (tampouco porque a base de dados no a suporta, ou porque SQLWindows no a suporta para essa base de dados).

Connecting Gupta Objects to Databases

2-

Arquitetura do cliente/usurio
Uma aplicao do cliente/usurio de SQLWindows consiste no tempo de execuo dos seguintes componentes: Gupta SQLWindows aplicao-applicationthis um programa que executem servios para o usurio, e que se comunique com uma base de dados using um SQLRouter. A aplicao pode ser escrita using QuickObjects, a lngua evolutiva orientada ao objecto da aplicao (SAL), ou uma combinao de ambos.
Biblioteca de software de SQLRouter-a fornecida com o Gupta que toma

como os dados e as aes de entrada especific por uma aplicao de Gupta SQLWindows; SQLRouter traa a entrada em ligaes de controle e em tipos de dados apropriados do API de um vendedor da base de dados (tal como OCI de Oracle ou ODBC de Microsoft) para executar as aes especific nos dados dados. SQLRouter igualmente aceita dados e aes de uma base de dados, e converte-os nas aes e nos dados que uma aplicao de Gupta SQLWindows pode compreender. Esta tabela alista o SQLRouters diferente disponvel e as bases de dados que voc usa o SQLRouter para conectar a:
SQLRouter Bases de dados do alvo

SQLRouter/Informix SQLRouter/ODBC

Informix 7.2 e 7.3 DB2/400, usurio 6.x de Microsoft SQL, Microsoft Access, Oracle (using o ODBC API) Oracle 8.1.5 e mais atrasado (using o API nativo) Sistema 11 e mais elevado CA-OpenIngres-OpenIngres 2.0

SQLRouter/Oracle SQLRouter/Sybase SQLRouter/Ingres

Vendedor API da base de dados - a relao do chamar-call-level fornecida

por um vendedor da base de dados para comunicar-se com a base de dados desse vendedor. Os exemplos incluem Oracle OCI, Informix SQLI, Sybase CT-LIB, SQL encaixado CA-OpenIngres-OpenIngres, e Microsoft ODBC.
Biblioteca de software da layerthe- do acesso de rede fornecida por um

vendedor da base de dados para aceitar as aes e os dados especific pelo vendedor API da base de dados e para emiti-los para fora sobre a rede. Esta biblioteca igualmente aceita as aes e os dados fornecidos pela base de dados sobre a rede e passa-os at a camada do API do vendedor da base de dados.
Connecting Gupta Objects to Databases

2-

Chapter 1

Overview Autocommit

que emite e recebe mensagens sobre a ferragem da rede. Os exemplos incluem o TCP/IP, o IPX/SPX, o NetBEUI, o NetBIOS, e Tubulao nomeada.
Software-softwaresoftware da rede

Autocommit
Cometer relaciona-se ao agrupamento de aes do usurio (muda tipicamente a uma base de dados) assim que todas as aes esto feitas permanentes na base de dados se e somente se so tudo bem sucedidas. O jogo de tais aes constitui transaes de uma transao-transactionsee i g u a l m e n t e na pgina 1 - 2 2 . O ajuste de defeito para o autocommit : OracleOFF-FORa Informix-OFF Microsoft SQL Usurio-ServerON Sistema 11-OFF CA-OpenIngresOFF-OpenIngres-FORa ODBC-no general, depende do excitador e da origem de dados. Se o autocommit est ligada, cada indicao de SQL executada transforma-se sua prpria transao. A menos que um erro ocorrer, o resultado da indicao de SQL est cometido base de dados. Tambm, voc libera fechamentos e outros recursos da transao o mais cedo possvel, sem precisar de executar um explcito COMETEM a indicao. Se o autocommit est e voc tem uma transao pendente, o que acontece se voc tenta executar uma indicao de DDL depende do usurio de base de dados:
As indicaes do usurio e do Sybase-DDL de Microsoft SQL no so

permitidas quando uma transao for pendente.


Oracle-OracleIf voc tenta executar uma indicao de DDL, o usurio

de base de dados comete primeiramente a transao pendente antes de executar a indicao de DDL.
Informix-InformixIf voc est usando a modalidade de usurio da base

de dados do ANSI ou da transao, as indicaes de DDL so consideradas parte da transao atual. Uma vez que voc comete (ou rolar para trs) a transao, o DDL est cometido (ou rolado para trs) junto com todas as indicaes restantes que compo a transao. As indicaes CA-OpenIngresDDL-OpenIngres-DDL so consideradas parte da transao atual. Uma vez que voc comete (ou rolar para trs) a transao, o DDL est cometido (ou rolado para trs) junto com todas as
1Connecting Gupta Objects to Databases

indicaes restantes que compo a transao. Se o autocommit est, voc comea uma transao, a seguir voc tenta girar sobre o autocommit, o que acontece depende em seguida do usurio de base de dados:

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

O usurio de Microsoft SQL, CA-OpenIngres-OpenIngres, e Sybasevoc come um erro. Voc deve primeiramente cometer ou rolar para trs a

transao pendente antes que voc possa girar o autocommit sobre.


Oracle e Informix-voc podem executar a indicao para girar sobre o

autocommit quando uma transao for pendente, mas o ajuste novo para o autocommit no toma imediatamente o efeito; voc deve primeiramente terminar a transao explicitamente cometendo a ou rolando a para trs. Uma vez que voc termina a transao pendente, o autocommit toma o efeito. Se o autocommit est ligada e preservao do contexto do cursor(CCP) est, executando uma indicao de SQL que modifique uma fileira em um resultado ajustado (como a ACTUALIZAO ou a SUPRESSO) cometa no somente a mudana base de dados, igualmente destri o resultado ajustado e seu cursor associado. Para executar operaes mltiplas no mesmo jogo do resultado, incapacita o autocommit ou permite o CCP (ou ambos). Se o autocommit est, voc responsvel para: Executando a indicao da CONSIGNAO (ou chamando S q l C o m m i t ) frequentemente bastante para reduzir o travamento desnecessrio que poderia restringir o acesso aos dados para outros usurios (por causa dos fechamentos lida ou da actualizao). Agrupando suas mudanas base de dados de tal maneira que somente as mudanas apropriadas so canceladas se voc precisa de executar um ROLLBACK. Um explcito comete (manual ou automtico) influncias que todos os punhos do SQL associaram com a mesma conexo base de dados. Para encontrar se a base de dados voc est conectando s sustentaes o autocommit, como o suporta, e se o autocommit de ligar/desligar revelia, ler o captulo neste livro devotado a essa base de dados. Para desligar o autocommit para todas as aplicaes de SQLWindows que conectam a uma base de dados dada, ajustar a palavra-chave apropriada de SQL.INI (se se definido para essa base de dados) a "OFF".
Nota: Voc pode desligar o autocommit somente para algumas das bases de dados que voc
pode conectar a. Ler a s e o de Autocommit dos captulos que discutem as bases de dados que sua aplicao conecta para a mais informao.

Voc gira o autocommit de ligar/desligar chamando SqlSetParameter. Mesmo que voc especific um punho especfico (hSql) como um dos argumentos, a mudana no ajuste para o autocommit afeta todos os punhos associados com a mesma conexo que o hSql. Para desligar o autocommit para uma aplicao dada, incluir a seguinte linha em sua
1Connecting Gupta Objects to Databases

aplicao de Gupta SQLWindows:


Chamar SqlSetParameter (h S q l , DBP_AUTOCOMMIT, FALSO, o strNull)

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview Ligar variveis

Se o autocommit est, as mudanas que voc faz a uma base de dados no se tornam permanentes at que voc execute uma indicao da CONSIGNAO (ou chamar SqlCommit). Mais, se voc desconecta da base de dados ou retira a aplicao (normalmente ou anormalmente) sem executar COMETE, a transao pendente pode ou no pode ser cometida para voc. Para encontrar o que acontece, ler o captulo que cobre a base de dados que voc est conectando a. Para a informaes adicionais, ler a documentao em SqlSetParameter e em DBP_AUTOCOMMIT n a r e f e r n c i a d e f u n o d e S Q L W i n d o w s .

Ligar variveis
Ligar variveis, variveis igualmente chamadas do programa, variveis de anfitrio, ou os marcadores do parmetro, referem os valores de dados associados com uma indicao de SQL. As variveis do ligamento associam (ligamento) uma posio sinttica em uma indicao de SQL com um valor de dados nessa indicao; o emperramento ocorre realmente no tempo de execuo. Uma varivel do ligamento em uma indicao de SQL indica que os dados de uma varivel na aplicao lhes esto limitados cada vez que a indicao executa. Esta caracterstica permite que uma indicao de SQL seja compilada uma vez e executada repetidamente com um jogo novo dos valores nas variveis do ligamento cada vez. Ler o captulo que cobre a base de dados a que voc est conectando para encontrar se (e como) as variveis do ligamento so suportadas por essa base de dados.

Simultaneidade
Uma nica aplicao de Gupta SQLWindows pode alcanar tabelas mltiplas em uma base de dados dada, assim como conecta s bases de dados mltiplas simultaneamente. Entretanto, a execuo de todas as funes de lngua evolutivas (SAL) da aplicao single-threaded- a funo deve terminar (e o valor do bOk retornado aplicao) antes que a indicao ou a funo seguinte na aplicao possam ser executadas. A simultaneidade pode igualmente ser afetada por como as aplicaes diferentes obtm e se liberam fechamento-locksfor informao relacionada, se lem nveis da isolao na pgina 1-12 e se travam o intervalo de parada na pgina 1-14. Para aprender como escrever as aplicaes que conectam s bases de dados mltiplas simultaneamente, ler o captulo 7, conectando s bases de dados mltiplas simultaneamente.

Parmetros da conectividade
Em sua aplicao de Gupta SQLWindows voc pode come e ajustar um nmero de parmetros que afetam o processamento de transao e outros atividades ou atributos
1Connecting Gupta Objects to Databases

relativas conectividade.

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

Os seguintes parmetros podem ser recuperados com SqlGetParameter e jogo com SqlSetParameter: O autocommit de DBP_AUTOCOMMIT-Whether de ligar/desligar. Vendedor de DBP_BRAND-The da base de dados voc conectado a. Limite de DBP_LOCKWAITTIMEOUT-Time em esperar um fechamento a ser liberado. A preservao do contexto do cursor de DBP_PRESERVE-Whether de ligar/desligar. Verso de DBP_VERSION-The da base de dados a que voc conectado. DBP_ROLLBACKONTIMEOUT-Whether a transao a mais recente est rolado para trs se um intervalo de parada expira. A lima SQLNWKCN da biblioteca. O APL (no diretrio de instalao de Gupta) contem um grande nmero constantes do usurio que voc pode recuperar com rAll de SqlGetParamete e ajustar com SqlSetParameterAll. Para usar estas constantes, incluir esta lima em sua aplicao de Gupta SQLWindows. Abrir esta lima com l i m a , a b r i - l a da barra de menu de Gupta SQLWindows e expandir a seo das constantes do usurio do esboo para ver as constantes definidas. Por exemplo, para ajustar o tamanho do amortecedor usado para prender dados LONGOS a 2000 bytes, incluir esta linha em sua aplicao:
SqlSetParameterAll (hSql, DBP_LONGBUFFER, 2000,'', VERDADEIRO)

Conectar a ordem da busca


O nome da base de dados suas tentativas da aplicao de Gupta SQLWindows para conectar (a base de dados do alvo) deve ser atribudo varivel global SqlDatabase antes que a aplicao chame SqlConnect. Antes que a aplicao tente realmente conectar base de dados, procurara cada seo router-router-specific da lima de SQL.INI por uma indicao do remotedbname que aliste o nome de base de dados do alvo. A ordem em que voc alista o SQLRouters diferente (using o comdl l palavra-chave) na lima de SQL.INI determina a ordem em que as sees router-router-specific so procuraradas. Por exemplo, se o DLL para SQLRouter/Oracle alistado primeiramente no comdl l indicaes, a seo Oracle-Oracle-specific da lima, a saber [oragtwy], procurarada primeiramente. Se uma indicao do remotedbname est encontrada que as lista um nome que combina o nome da base de dados do
1Connecting Gupta Objects to Databases

alvo, a aplicao tentam conectar-connectif a tentativa de conectar falhas, a aplicao come um erro. Se nenhuma indicao do remotedbname encontrada que lista um nome que combina o nome da base de dados do alvo, a seo router-routerspecific para o SQLRouter seguinte na seqncia de

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview Preservao do contexto do cursor

o comdl l indicaes procurarado. Isto continua at que

um nome de base de dados de harmonizao esteja encontrado, ou at a seqncia do comdl l indicaes est esgotado. Uma variao ligeira aplica-se a SQLRouter/ODBC e a SQLRouter/usurio de Microsoft SQL. Em vez de procurarar a seo [do odbcrtr] de SQL.INI por uma indicao do remotedbname, a aplicao tenta encontrar um nome da origem de dados de ODBC no ODBC. Lima de INI que combina o nome de base de dados do alvo. Se no, o processamento o mesmo que para todo o SQLRouters restante. Para mais informao sobre a lima de SQL.INI, ler aplicaes de inicializao de SQLWindows na pgina 2-5. Para mais informao sobre a indicao do remotedbname, ler a seo das palavras-chaves de SQL.INI para cada um dos usurios de base de dados (Oracle, Informix, e assim por diante) que voc conectar a.

Preservao do contexto do cursor


A preservao do contexto do cursor (CCP) preserva quaisquer jogos do resultado (FERS-FERSsee including a parte frontal resultar jogos na pgina 1-8) esses voc recuperou durante uma transao, assim como os cursores associados com os aqueles resultam jogos, mesmo depois que voc faz uma CONSIGNAO. Voc igualmente mantem os fechamentos que voc obteve durante a transao. No todo o CCP da sustentao de bases de dados. CA-OpenIngres-OpenIngres no faz. Se a base de dados que voc est conectando no suporta o CCP, ou o suporta mas voc o desligou, voc perde todos os jogos do resultado e seus cursores associados quando voc faz uma CONSIGNAO; voc igualmente libera todos os fechamentos obtidos durante a transao.
N o t a : SQLWindows desliga o CCP revelia.

Se o CCP est e voc comete a transao atual (ou explicitamente ou porque o autocommit est ligada), voc perde tudo jogos abertos do resultado e todas as declaraes preparadas so invalidadas. Se o CCP est ligada, entretanto, os jogos do resultado permanecem abertos mesmo depois que a consignao.
I m p o r t a n t e : Se voc rola para trs a transao, voc perde tudo jogos abertos do resultado mesmo se o CCP est ligada.

Se o autocommit est e voc muda o ajuste do CCP durante uma transao, o ajuste novo para o CCP no toma o efeito at que voc cometa ou role para trs a transao atual.
1Connecting Gupta Objects to Databases

Para girar sobre o CCP, incluir a indicao:


Chamar SqlSetParameter (h S q l , DBP_PRESERVE, VERDADEIRO, o strNull)

em sua aplicao de SQLWindows. Chamar esta funo para cada punho do SQL associado com os jogos que do resultado voc quer manter o contexto for-see os punhos, os contextos, e as conexes na pgina 1-9 para informao relacionada.

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

I m p o r t a n t e : Se sua aplicao executa um ROLLBACK, todo o resultado se ajusta (se o

resultado backend se ajusta ou FERS) e seus cursores esto rejeitados mesmo se o CCP permitido.

Se voc est usando a parte frontal que o resultado se ajusta (FERS) e voc permitiu o CCP, as fileiras no jogo do resultado permanece disponvel a sua aplicao mesmo depois que voc executa uma CONSIGNAO. Entretanto, os dados na lima de FERS no so actualizados mant-la na sincronizao com nenhuma mudanas feita s fileiras correspondentes no usurio de base de dados. Se outros clientes fazem mudanas tabela no usurio, os dados de FERS sero expirado. Para aprender aproximadamente mais FERS, leu os jogos do resultado da parte frontal da seo na pgina 1-8. Para encontrar se a base de dados voc est conectando s sustentaes o CCP, ler o captulo neste livro que cobre essa base de dados.

Jogos do resultado da parte frontal


Se voc gira sobre a modalidade ajustada do resultado (modalidade ajustada lida do resultado na pgina 1-18) em sua aplicao de SQLWindows, o usurio de sua aplicao pode enrolar ambos para trs e envia atravs de um jogo do resultado retornado da base de dados; o usurio tem ento "um cursor scrollable". Se voc desliga modalidade ajustada do resultado, o usurio de sua aplicao pode enrolar envia somente com o resultado ajustou-se-no para trs.
N o t a : Em SQLWindows, a modalidade ajustada do resultado est revelia.

Se voc gira sobre modalidade ajustada do resultado, e sua aplicao est conectada a uma base de dados que tenha a sustentao nativa para os cursores scrollable (chamados s vezes jogos backend do resultado ou cursores backend), os usos de SQLWindows que suportam para permitir que o usurio enrole em ambos os sentidos atravs de um jogo do resultado. Se a base de dados no tem a sustentao nativa para cursores scrollable, SQLWindows executa esta capacidade using jogos do resultado da parte frontal (FERS).
N o t a : Mesmo se os cursores scrollable (backend) das sustentaes de base de dados do alvo, esta

caracterstica devem primeiramente ser permitidos na base de dados para que sua aplicao a use.

Para executar FERS, o software de SQLRouter toma um instantneo do jogo do resultado retornado por uma indicao SELETA e armazena-o em uma lima provisria no cliente. Cada lima nomeada F R S n (sem a extenso), onde n uma primeira lima do integerthe- positivo nomeado F R S 1 ; o segundo,
1Connecting Gupta Objects to Databases

FRS2;

e assim por diante.

SQLRouter precisa dois punhos de lima para cada lima que de FERS cria. Se SQLRouter no pode obter os punhos de lima, retorna um erro aplicao.

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview Punhos, contextos, e conexes

Estas limas de FERS so suprimidas quando sua aplicao de SQLWindows tenta preparar uma outra indicao ou umas disconexes de SQL do usurio de base de dados. Se a aplicao termina anormalmente e deixa estas limas, voc deve suprimir d procura-as manualmente no diretrio padro onde as limas provisrias so armazenadas.
N o t a : Se sua aplicao est usando FERS, voc pode liberar todos os fechamentos compartilhados no jogo do resultado retornado pelo seu SELETO indicao-statementcall SqlGetResultSetCount. Para aprender mais sobre esta funo, ler a r e f e r n c i a d e f u n o d o
SQL Windows.

Voc no pode SELECIONAR... PARA A ACTUALIZAO (cursores posicionados uso) se o cursor nomeado associado com um jogo do resultado da parte frontal. Ou seja voc no pode travar no usurio as fileiras que esto sendo indicadas no cliente. Os dados que o usurio v no cliente no podem combinar os dados no usurio se uma outra aplicao faz mudanas 2 aquelas mesmas fileiras. Para a informao em modalidade ajustada do resultado e como permiti-la, ler modalidade ajustada do resultado na pgina 1-18. Para a informao em FERS e em preservao do contexto do cursor (CCP), ler a preservao do contexto do cursor na pgina 1-7.

Punhos, contextos, e conexes


Para um SQLRouter, um punho de SQLWindows SQL identifica um contexto para a preparao separada (compilao) e a execuo de indicaes de SQL, e (para indicaes SELETAS) o acesso das fileiras de um jogo do resultado. O punho igualmente identifica um contexto separado para uma comunicao entre a aplicao e o usurio. Se permitido pelo usurio de base de dados do alvo, uma aplicao de SQLWindows pode ter conexes mltiplas a uma base de dados, e aos punhos abertos do mltiplo em toda a conexo dada. Uma aplicao de SQLWindows abre uma conexo a uma base de dados quando faz sua primeira chamada a SqlConnect; ao mesmo tempo, a aplicao obtem seu primeiro segurar-handlethis permite que a aplicao prepare e execute indicaes de SQL. So associados com esta conexo um nome de base de dados, um usurio identificao, e uma senha. Quando a aplicao faz chamadas adicionais a SqlConnect, SQLRouter usa a mesma conexo base de dados, mas estabelece um contexto novo. Se voc passa uma varivel nova do punho do SQL como o argumento a SqlConnect (o caso normal), voc continua a ter o acesso a todos os contextos que restantes voc criou com as chamadas mais adiantadas a SqlConnect. Esta arquitetura permitem que voc, por exemplo, obtenha um jogo do resultado, posicionam o cursor ajustado do resultado fileira desejada, a seguir actualizam a fileira sem perder o jogo do resultado ou a planta da execuo para a indicao SELETA que obteve o resultado ajustar-setfor mais informao, consideram
1Connecting Gupta Objects to Databases

actualizaes posicionadas na pgina 1-17.

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

documentao de Gupta refere o punho do SQL como um "cursor." Isto muito diferente do uso do ANSI do cursor do termo, que um ponteiro a uma fileira dada em um jogo do resultado.
N o t a : Alguma

Geralmente, uma aplicao de SQLWindows que use os punhos mltiplos faz um do seguinte: Conecta mesma tabela para duas activitiesthe- diferentes seguram primeiramente usado para preparar e executar uma indicao SELETA para obter um jogo do resultado, a seguir buscam a fileira desejada desse jogo do resultado; o segundo punho usado para preparar e executar a indicao de SQL que modifica o jogo do resultado (ACTUALIZAO, INSERO, ou SUPRESSO). Conecta a duas tablestheque diferentes o punho usado para preparar e executar a indicao de SQL que actualiza uma coluna em uma tabela baseada em um valor de uma outra tabela obtida preparando e executando uma indicao de SQL diferente. Conecta a dois diferentes base de dados-databaseseach punho identifica um contexto separado para preparar e executar indicaes de SQL. Geralmente, os punhos diferentes do SQL, quando identificarem contextos separados para preparar e executar indicaes de SQL, so toda a parte do mesmo espao da transao. Conseqentemente, se voc executa uma indicao da CONSIGNAO ou do ROLLBACK em qualquer punho, o usurio de base de dados comete (ou rola para trs) os resultados de todas as indicaes de SQL uncommitted executadas em todos os punhos abertos conectados a uma base de dados dada.
N o t a : Quando vem s indicaes de consignao, algumas bases de dados distinguem entre

indicaes de lngua da manipulao (DML) de dados e indicaes de Langauge da definio (DDL) de dados. Com estas bases de dados, as indicaes de DDL so cometidas sempre, visto que as indicaes de DML esto cometidas somente se a indicao da CONSIGNAO (ou a f u n o de SqlCommit) so executadas. Em outras bases de dados, nem as indicaes de DML nem de DDL so cometidas at que COMETER for executado (ou S q l C o m m i t est chamado). Esta discusso inteira supor, naturalmente, que o autocommit est.

O nmero mximo de punhos e de conexes que sua aplicao pode ter depende de seus recursos do sistema de explorao do cliente e todos os limites impor pelo usurio de base de dados SQLWindows do alvo prprio no impor nenhuma limitao. Para informao relacionada, ler t r a n s a e s na pgina
1-22.

Tipos da coluna da IMAGEM


Uma aplicao de SQLWindows pode ler, redigir, e actualizar dados BINRIOS
1Connecting Gupta Objects to Databases

LONGOS (dados de IMAGEM) using indicaes de SQL regulares (SELECIONAR e ACTUALIZAO). Isto verdadeiro mesmo que SQLWindows no tenha um tipo de dados nativo do BINRIO LONGO. Em lugar de, SQLWindows converte dados BINRIOS LONGOS aos dados LONGOS da CORDA ao ler, e dados LONGOS da CORDA aos dados BINRIOS LONGOS ao escrever.

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview Tipos da coluna da IMAGEM

Ao redigir dados LONGOS da CORDA s colunas da IMAGEM, a varivel do ligamento que contem os dados deve ser limitada ao tipo de dados apropriado chamando SqlSetLongBindDatatype.

Dados da escrita a uma coluna da IMAGEM


1. Atribuir os dados a uma varivel de CORDA LONGA de SQLWindows. Os dados devem usar a sintaxe correta para a coluna onde sero armazenados. 2. 3. Preparar a indicao de SQL que actualizar o valor apropriado na tabela. Ajustar o emperramento da varivel de CORDA LONGA para datilografar o BINRIO LONGO (valor numrico de 23) chamando SqlSetLongBindDatatype com os parmetros corretos. 4. Executar a indicao de SQL preparada. A sintaxe pe : bOk = SqlSetLongBindDatatype (nBindVarNumber, nDatatype) onde ambos os argumentos so do tipo nmero. O primeiro parmetro identifica a varivel do ligamento a ser ajustada por sua posio ordinal no SQL preparado indicao-statementuse 1 para denotar a primeira varivel do ligamento na indicao de SQL, 2 para denotar a segunda varivel do ligamento, e assim por diante; o segundo parmetro indica o tipo de dados a que a varivel do ligamento deve ser ajustada (BINRIO LONGO).
N o t a : O valor numrico a usar-se como o segundo parmetro 23 (para o BINRIO LONGO).

de

SqlSetLongBindDataty

Para fazer seu cdigo self-documenting, voc deve criar uma constante simblica com esse valor, a seguir usa a constante como o parmetro.

Por exemplo:
Constantes Sistema Usurio Nmero: LONGBINARY = 23 Variveis locais Corda: strName
1Connecting Gupta Objects to Databases

Corda longa: strPhoto ... Aes ... SqlConnect (hSql) ... ! Supr que ns lemos um nome no strName e em uma lima de .BMP ! no strPhoto. Ns queremos actualizar um empregado particular ! foto na base de dados.

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

Chamada SqlPrepare (hSql,' ACTUALIZAO emp' | | ' AJUSTAR o emp_name =: strName, image_col =: strPhoto') ! Porque a varivel do ligamento: o strPhoto o segundo ligamento! a varivel na indicao que de SQL ns apenas nos preparamos, ns ajustou-se! o parmetro do nBindVarNumber d e SqlSetLongBindDatatype 2. chamada SqlSetLongBindDatatype (2, LONGBINARY) Chamada SqlExecute (hSql)

SqlSetLongBindDatatype deve ser chamado imediatamente depois da chamada a SqlPrepare. O emperramento estabelecido com SqlSetLongBindDatatype dura at que a chamada seguinte a SqlPrepare no mesmo punho do SQL.
N o t a : SQLWindows converte automaticamente entre dados LONGOS da CORDA e do TEXTO;

voc no precisa de chamar SqlSetLongBindDatatype ao ler e ao redigir dados do TEXTO.

Nveis da isolao
Controle de nveis da isolao como o acesso s tabelas em uma base de dados por um usurio afeta outros usurios que alcanam as mesmas tabelas nessa base de dados. Estes nveis da isolao so executados por fechamentos e aplicam-se a todas as indicaes de SQL executadas como parte de uma nica transao. O nvel que da isolao voc escolhe depende da exigncia de aplicao para a consistncia e a simultaneidade. A consistncia significa que durante uma transao, os dados lidos permanecem estveis. Isto implica que os dados que esto sendo lidos por uma transao no mudam por causa das actualizaes, das supresses, e das inseres executadas por outras transaes. A simultaneidade uma funo do nmero de usurios que podem alcanar dados ao mesmo tempo. A simultaneidade elevada permite que os usurios mltiplos executem transaes de base de dados simultaneamente sem interferir um com o otro, mas na despesa possvel da consistncia.

Termos nivelados de Isloation


Os nveis da isolao so definidos frequentemente nos termos dos seguintes fenmenos:
- l i d o - a t r a n s a o suja A muda uns ou vrios valores da coluna em uma fileira. A transao B l a mesma fileira, depois do qual a transao A rola para trs suas mudanas. A transao B tem lido agora os valores que (de um ponto de vista transaction-oriented) nunca existiu. 1Connecting Gupta Objects to Databases

nonrepeatable lido -

a transao A l uma fileira. A transao B actualiza ou suprime da fileira. A transao A no pode agora repetir lido daquele

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview Nveis da isolao

enfileirar e come os mesmos resultados; ou os valores so diferentes ou a fileira j no existe. a transao A executa um SELETO em uma tabela. Baseado nos critrios de seleo na indicao SELETA, um jogo das fileiras retornado s inseres da transao B do A. umas ou vrias fileiras novas na mesma tabela com valores que acontecem combinar os critrios de seleo da indicao SELETA usada pelo A.. Se a transao A executa a mesma indicao SELETA, obtem a
fileira fantasma -

o jogo diferente das fileiras do que ela fz a primeira vez.


N o t a : Esta discusso aplica-se s aplicaes de Gupta. Se usando SQLTalk, o nvel da isolao

do defeito, independentemente da base de dados a que voc conecta, sempre RR (repetvel l).

Escolher o nvel apropriado da isolao para suas aplicaes dependendo do contrapeso que voc precisa de conseguir entre a simultaneidade do acesso de dados e a consistncia de dados.

A isolao l pelo usurio


SQLWindows fornece quatro cdigos que two-letter diferentes voc pode especific quando voc ajusta uma isolao em nvel. A tabela abaixo das mostras voc o nvel que da isolao voc come dependendo do cdigo voc especific e o usurio de base de dados voc conectado a.
Microsoft SQL Server/ODBC Sybase Sistema 11 CA OpenIngres

Cdigo

Oracle

Informar ix

Default* RO RL CS RR

nao aplicvel

cometido l

read_committed ler uncommitted lido cometido repetvel l serializable

Nvel 1 Nvel 0 no suportado Nvel 1 Nvel 3

repetvel l nao aplicvel nao aplicvel nao aplicvel nao aplicvel

no suportado no suportado no suportado no suportado

sujo l cometido l estabilidade do cursor repetvel l

A juste niv e lado da isola o .

* O defeito no um cdigo real. Esta fileira indica o nvel que da isolao voc come quando voc conecta primeiramente ao usurio de base de dados dado.
1Connecting Gupta Objects to Databases

N o t a : O usurio de Microsoft SQL suporta os nveis da isolao alistados na coluna Microsoft

SQL Server/ODBC. Para origens de dados de ODBC sobre excepo do usurio de Microsoft SQL, o router de SQLWindows ODBC tenta ajustar muito o mesmo trao de cdigos two-letter aos nveis da isolao; entretanto, que a isolao em nvel (eventualmente) executada realmente para um cdigo dado depende do

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

Excitador de ODBC e o usurio que de base de dados voc se est usando para alcanar sua origem de dados. Sua documentao do excitador de ODBC e do usurio de base de dados deve fornecer a informao que voc precisa.

N o t a : Os usurios CA-OpenIngres-OpenIngres no suportam nveis da isolao. Usar a

indicao do JOGO LOCKMODE para ajustar tipos e nveis diferentes de fechamentos. O fechamento do defeito c o m p a r t i l h a d o para lido e o E x c l u s i v e para escreve.

Se voc tenta mudar nveis da isolao quando uma transao for pendente, o que acontece depende do usurio de base de dados: A tentativa de OracleThe- de mudar nveis da isolao ignorada. Informix e a transao pendente do ServerThe- de Microsoft SQL so cometidos primeiramente, a seguir o nvel da isolao mudado como pedido. O pedido do sistema 11-The de Sybase rejeitado e um erro levantado. Para ajustar a isolao em nvel em sua aplicao, chamar SqlSetIsolationLevel. Por exemplo, para ajustar a isolao em nvel a SQL_TXN_SERIALIZABLE no usurio 6.0 de Microsoft SQL, pr a indicao:
Chamar SqlSetIsolationLevel (hSql,' os RR')

em sua aplicao de SQLWindows. Ver a referncia de funo de SQLWindows para mais informao sobre esta funo.
I m p o r t a n t e : Ler os captulos que cobre as bases de dados a que voc est conectando para

encontrar os tipos dos nveis da isolao que so suportados naquelas bases de dados, e dos argumentos apropriados para se usar ao chamar S q l S e t I s o l a t i o n L e v e l .

Travar o intervalo de parada


O intervalo de parada do fechamento a quantidade de tempo gastada esperando um recurso para tornar-se disponvel. Se uma ao no pode ser terminada dentro do limite do jogo, a transao est abortada e todas as mudanas so roladas para trs. Para permitir o intervalo de parada do fechamento, chamar SqlSetLockTimeout, ou chamar SqlSetParameter com o parmetro de DBP_LOCKWAITTIMEOUT. (Para mais informao sobre estas funes, referir a referncia de funo de SQLWindows e a ajuda em linha.) Ler o captulo que cobre a base de dados a que voc est conectando para encontrar que tipo de intervalos de parada do fechamento (eventualmente) so suportados nessa base de dados.
1Connecting Gupta Objects to Databases

Anula, cordas vazias, e espaos

Anula, cordas vazias, e espaos


Dado uma coluna que seja de algum tipo de dados da corda de carter, voc pode na insero geral (ou na actualizao) os dados nessa coluna using qualquer de trs valores diferentes que voc pode pensar similar entre eles, mas realmente completamente distinto: valor denota "undefined o valor". Usar o ZERO para indicar que no h nenhuma informaes disponveis para essa coluna. Voc pode pr o ZERO em uma coluna somente se voc definiu a coluna para reservar anula quando voc criou a tabela que tem essa coluna.
Nulo-NULLThis

uma corda do comprimento zero. um valor de corda real. Se uma coluna da corda de carter tem a corda vazia, o valor da coluna est definido. (Este ZERO desigual, assim que significa que o valor da coluna indeterminado.)
Esvaziar o corda-stringThis

Para armazenar realmente a corda vazia em uma coluna, voc deve poder definir a coluna para ser um tipo de carter do variar-varying-length, aonde o comprimento varie de zero a algum nmero positivo. Se voc define a coluna para ser um tipo de carter fixed-length, o valor que voc introduz (ou actualizao) est acolchoado com espaos se mais curta do que o comprimento fixo definido para essa coluna. A corda vazia tem um comprimento de zero, assim que acolchoada sempre com espaos ( sempre mais curta do que o comprimento fixo definido para a coluna). Assim, no caso de uma coluna de um tipo de dados fixed-length da corda, a base de dados armazena sempre uma corda dos espaos no lugar da corda vazia. (Se voc concatena a corda vazia com qualquer corda X, o resultado a mesma corda X.) uma corda do comprimento um. No nenhum diferente de nenhuma outra corda do comprimento um tanto quanto a base de dados. O nico special da coisa sobre um espao que mais duro para voc "v" um espao do que a maioria outras de cordas do comprimento um.
Espao-SpaceThis

Todas as bases de dados armazenaro um espao em uma coluna da corda de carter. Se voc reserva anula em uma coluna da corda de carter quando voc cria a tabela com essa coluna, a base de dados igualmente armazenar um ZERO. Entretanto, as bases de dados diferentes armazenam valores diferentes na coluna da corda de carter dea (variar-varying-length) quando voc tenta armazenar o corda-stringsome vazio faz armazenar a corda vazia, alguns armazenam o ZERO, e outro armazenam um espao. Ao introduzir ou ao actualizar uma coluna da corda em uma tabela de base de dados de modo que indicar que no h nenhum dados na coluna, voc incorpora tipicamente um ZERO (se a tabela permite esta), a corda vazia (igualmente chamada a corda do zerozero-length), ou um espao. Qual destes voc o avalia o uso depende sobre se a tabela
Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

reserva anula na coluna e como sua aplicao escrita. A tabela abaixo das mostras que valor armazenado realmente na base de dados, dependendo do usurio de base de dados e do valor fornecidos pelo cliente.

1-

Connecting Gupta Objects to Databases

N o t a : Para usar STRING_Null, voc deve atribui-lo a uma varivel de corda, a seguir usa-se que

varivel como uma varivel do ligamento em sua indicao da INSERO ou da ACTUALIZAO do SQL. Microsoft Usurio do SQL

Entrada do cliente

Oracle

Informar ix

Sistema de Sybase CA-OpenIngres11 OpenIngres

corda vazia ("") ZERO espao STRING_Null

ZERO

espao

espao

ZERO espao ZERO

ZERO espao ZERO

ZERO espao ZERO

espao (constante) ZERO (ligamento varivel) ZERO espao ZERO

espao (constante) ZERO (ligamento varivel) ZERO espao ZERO

V a l o r re a l a r m a z e n a d o .

Nota: O comportamento de uma origem de dados de ODBC depende do excitador e do usurio que de base de dados voc conecta a.

Using o ZERO
Para introduzir o ZERO em algumas das colunas da corda de suas tabelas de base de dados, ou actualizar tais colunas com o ZERO (que supor as colunas reservar anula), voc deve: 1.Ajustar uma varivel de corda ao STRING_Null constante predefinido. 2.Preparar e executar uma INSERO do SQL ou ACTUALIZAR a indicao using a varivel em etapa 1 como uma varivel do ligamento. Por exemplo:
strVar ajustado = STRING_Null .... SqlPrepareAndExecute (hSql, this_column my_table do JOGO da ACTUALIZAO do `=: `strVar) I m p o r t a n t e : Voc deve explicitamente ajustar a varivel de corda a STRING_Null porque

SQLWindows inicializa todas as variveis de corda corda vazia (do zero-zero-length). Somente usando um jogo da varivel do ligamento a STRING_Null (um pouco do que a corda vazia) pode voc armazenar o ZERO nas colunas da corda de suas tabelas de base de dados.

Para testar se um valor que da coluna da corda voc busca de uma das tabelas em sua base de dados NULO, voc deve comparar a varivel em que voc buscou o valor ao STRING_Null constante.
Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

Por exemplo:

1-

Connecting Gupta Objects to Databases

Actualizaes posicionadas

SqlPrepareAndExecute (hSql, string_col SELETO do `de my_table EM: `do strColValue) SE strColValue = STRING_Null.... N o t a : Voc pode igualmente duro-hard-code o ZERO em uma indicao de SQL, se apropriado.

Actualizaes posicionadas
As aplicaes de SQLWindows podem executar actualizaes posicionadas (ONDE CORRENTE de actualizaes do cursor) quando conectadas a determinadas bases de dados. Para que as actualizaes posicionadas sejam possveis: Voc deve criar um ndice original em uma das colunas da tabela (usurio de Microsoft SQL somente). Voc deve girar sobre modalidade ajustada do resultado (cursores scrollable), salvo que este no exigido para Oracle.

Codificando uma actualizao posicionada


1.Criar um ndice original em uma das colunas da tabela (usurio de Microsoft SQL somente). 2.Conectar duas vezes para obter dois punhos distintos do SQL. 3.Permitir modalidade ajustada do resultado (cursores scrollable), especific um dos punhos do SQL obtidos na etapa precedente. (No exigido para Oracle.) 4.Using o mesmo punho do SQL que na etapa precedente, executar o SELETO... PARA a indicao da ACTUALIZAO para recuperar o valor chave da coluna, e as algumas outras colunas do interesse da tabela. 5.Using o mesmo punho do SQL que na etapa precedente, criar um cursor nomeado chamando SqlOpen. 6.Posicionar o cursor fileira apropriada (using, as funes por exemplo, de SqlFetchNext, de SqlFetchPrevious, ou de SqlFetchRow). 7.Using o outro punho do SQL, preparar e executar uma indicao da ACTUALIZAO com ONDE CORRENTE da clusula do cursor. Especific o cursor que foi nomeado com SqlOpen. O seguinte fragmento do cdigo ilustra os destaques. Alm do que o fornecimento de um exemplo das etapas alistou acima, mostras deste fragmento a criao da tabela a ser alcanada e a criao do ndice original. Substituir o numeric_data_type com um
Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

tipo de dados numricos apropriado para sua base de dados.

1-

Connecting Gupta Objects to Databases

I m p o r t a n t e : Voc precisa de executar a indicao ORIGINAL do NDICE da CRIAO

(includa no cdigo abaixo) somente quando conectado verso 6.x. do usurio de Microsoft SQL. Para outras bases de dados, omitir esta indicao. Chamar a chamada SqlConnect de SqlConnect (hSqlA) (o hSqlB) strCreateTable ajustados =' CRIAM O REALTY da TABELA' strCreateTable = strCreateTable ajustados || ' (PROPNUM INT,' strCreateTable = strCreateTable ajustados || ' CIDADE VARCHAR (30),' strCreateTable = strCreateTable ajustados || ' Chamada SqlP r e p a r e A n d E x e c u t e d o n u m e r i c _ d a t a _ t y p e d o P R E O )' (hSqlA, strCreateTable) Ajustar o strCreateIndex =' CRIAM O NDICE ORIGINAL REALTY_IDX' Ajustar o strCreateIndex = o strCreateIndex || ' Chamada SqlPrepareAndExecute no REALTY (PROPNUM)' (hSqlA, strCreateIndex) Chamada SqlSetResultSet (hSqlA, VERDADEIROS) Chamada SqlPrepareAndExecute (hSqlA,' PROPNUM SELETO, CIDADE, PREO DO REALTY PARA A ACTUALIZAO EM: COL1,: COL2,: COL3') Se no SqlOpen (hSqlA,' CUR1') ... Se no SqlFetchNext (hSqlA, nRetVal) ... Se no SqlPrepare (hSqlB,' REALTY da ACTUALIZAO AJUSTAR O PREO =: COL3 ONDE CORRENTE DE CUR1') ... ! Se nenhum problema que prepara a indicao da ACTUALIZAO, a faz. Chamada outra SqlExecute (hSqlB)

Ler o captulo que cobre a base de dados a que voc est conectando para encontrar se as sustentaes dessa base de dados posicionaram actualizaes.

Modalidade ajustada do resultado


Voc gira sobre modalidade ajustada do resultado em sua aplicao de SQLWindows para permitir que um usurio de sua aplicao enrole ambos envia e para trs atravs de um jogo do resultado retornado pela base de dados. A modalidade ajustada do resultado fora de revelia quando voc conecta a algumas das bases de dados cobertas neste livro. Quando a modalidade ajustada do resultado est, h diversas conseqncias para sua aplicao: Voc pode recuperar somente um resultado
Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

ajustado em um momento. O cursor pode mover-se para a frente somente.

1-

Connecting Gupta Objects to Databases

Modalidade ajustada do resultado

Voc deve buscar todas as fileiras do jogo do resultado antes de recuperar um outro resultado ajustado ou de executar uma outra indicao de SQL (por exemplo, CRIAR A TABELA), mesmo em um outro punho. Isto significa que, contanto que um jogo do resultado recuperado em um punho dado do SQL for pendente (voc no buscou ainda todas as fileiras), seu a aplicao no pode executar nenhuma operaes em nenhum outro punho do SQL na aplicao.
I m p o r t a n t e : Nenhuma destas limitaes aplica-se se voc gira sobre modalidade ajustada do

resultado.

Desligando a modalidade sobre e


Para girar sobre modalidade ajustada do resultado, incluir a indicao: Ajustar
SqlResultSet=TRUE

em sua aplicao de SQLWindows (antes de chamar SqlConnect). Voc pode igualmente incluir a indicao:
Chamada SqlSetResultSet (h S q l , VERDADEIROS)

em sua aplicao. Fazer esta chamada antes que voc prepare e execute a indicao SELETA que recupera o resultado ajustado para qual voc quer o cursor ser scrollable. Para desligar modalidade ajustada do resultado, especific FALSO (em vez de VERDADEIRO) n a s i n d i c a e s do jogo e de chamada. Se voc gira sobre modalidade ajustada do resultado para um usurio de base de dados que no suporte os cursores scrollable (chamados s vezes cursores backend), o software de SQLRouter empreg jogos do resultado da parte frontal (FERS) para come o mesmos efeito-effectfor mais informao, leu jogos do resultado da parte frontal na pgina 1-8. Para encontrar se a base de dados voc est conectando sustentaes s scrollable cursores (backend), ler o captulo neste livro que cobre essa base de dados.

Rubricar o ajuste
Quando uma aplicao de SQLWindows comea primeiramente acima, o valor da varivel de sistema global SqlResultSet indeterminado (zero). Contanto que o valor de varivel permanecer indeterminado, a modalidade ajustada do resultado inicialmente sobre para todas suas conexes a SQLBase e inicialmente fora para
Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

todas suas conexes a todos usurios de base de dados restantes. Se voc ajusta SqlResultSet PARA RECTIFICAR, a modalidade ajustada do resultado inicialmente sobre para toda a conexo que subseqente voc fizer a qualquer usurio de base de dados, including SQLBase. Se voc ajusta SqlResultSet a FALSO, a modalidade ajustada do resultado inicialmente fora para toda a conexo que subseqente voc fizer a qualquer usurio de base de dados, including SQLBase. Em um ou outro caso, se voc ajusta ento SqlResultSet a NUMBER_Null, a modalidade ajustada do resultado inicialmente sobre para todas suas conexes subseqentes a SQLBase e inicialmente fora para todas as conexes subseqentes a todos usurios de base de dados restantes.

1-

Connecting Gupta Objects to Databases

Mudar o valor da varivel global SqlResultSet no afeta o ajuste de modalidade ajustada do resultado para nenhuma conexo existente. Para mudar o ajuste de uma conexo existente, voc deve chamar a funo SqlSetResultSet.
Importante:

Com o usurio 6.x de Microsoft SQL ou a toda a origem de dados de ODBC, mesmo que voc especific um punho especfico do SQL como um argumento a SqlSetResultSet, o ajuste novo para modalidade ajustada do resultado afeta todos os punhos do SQL na mesma conexo, no apenas o punho que do SQL voc passa como um argumento. Se voc conecta nativa a Oracle, Informix, ou o sistema 11 de Sybase, entretanto, o ajuste novo para modalidade ajustada do resultado afeta somente o punho que voc especific como um argumento a SqlSetResultSet.

Efeitos de ajustar a modalidade


O ajuste de modalidade ajustada do resultado pode afetar mesmo se voc pode ter jogos abertos do resultado do mltiplo (cursores simultneos). Com CA-OpenIngresOpenIngres, using jogos simultneos mltiplos do resultado, voc deve ajustar S q l R e s u l t S e t antes de todo o S q l C o n n e c t s . Se no, voc tem que usar a ligao de controle aps cada um conecta. Tambm, o ajuste de modalidade ajustada do resultado pode afetar os procedimentos armazenados que o resultado do retorno ajusta:
U s u r i o d e M i c r o s o f t S Q L - voc deve sempre desligar modalidade ajustada do resultado antes de chamar um procedimento armazenado se retorna uns ou vrios resulta jogos. Uma vez que voc retorna do procedimento armazenado, voc pode girar modalidade ajustada do resultado para trs sobre se voc deseja.

de ODBC fonte-sourceAny exigncias especiais, limitaes, ou efeitos secundrios dependem de que excitador de ODBC voc est usando e a origem de dados voc est alcanando. Ler sua documentao do excitador e do usurio de base de dados para mais informao.
Os dados

voc chama SqlPLSQLCommand, SQLWindows desliga automaticamente modalidade ajustada do resultado para o punho que do SQL voc fornece como um argumento. Uma vez que voc retorna da chamada a SqlPLSQLCommand, voc pode girar modalidade ajustada do resultado para trs sobre se voc deseja.
Oracle-OracleWhen

Ver a tabela abaixo para mais informao.


Atributo Oracle/Informix Usurio de Microsoft SQL Sistema 11 de Sybase CA - OpenIngres

default*

FORA DE

FORA DE

FORA DE

Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

cursores scrollable jogos simultneos do resultado

deve ser SOBRE

deve ser SOBRE

deve ser SOBRE deve ser SOBRE (se certificar o autocommit est)

pode ser DE deve ser SOBRE LIGAR/DESLIGAR

1-

Connecting Gupta Objects to Databases

Palavras-chaves de SQL.INI

Atributo

Oracle/Informix

Usurio de Microsoft SQL Sistema 11 de Sybase

CA-OpenIngresOpenIngres

actualizaes deve estar posicionadas ou supresses using um cursor Status de modalidade ajustada do resultado.

no suportado **

no suportado

* Esta fileira est correta se a varivel global SqlResultSet nula ou FALSA. ** Quando conectado ao sistema 11 de Sybase, voc pode declarar um cursor em fileiras de um procedimento armazenado e do esforo de um jogo do resultado retornado por esse procedimento armazenado; entretanto, voc no pode fazer actualizaes ou supresses posicionadas no resultado ajustado using esse cursor.

Palavras-chaves

de SQL.INI

Todas as aplicaes de SQLWindows se inicializam lendo a lima de SQL.INI. Para encontrar mais sobre esta lima, ler aplicaes de inicializao de SQLWindows na pgina 2-5.

Procedimentos armazenados
A maioria de bases de dados permitem os procedimentos que contm as indicaes de SQL e a lgica do procedimento a ser compiladas e executado no usurio de base de dados. Estes procedimentos podem retornar jogos do resultado, e alguns podem aceitar variveis do ligamento da entrada (variveis de anfitrio) como argumentos. Se os procedimentos armazenados de sustentaes de base de dados do alvo, voc podem os chamar de uma aplicao de SQLWindows. Using procedimentos armazenados pode melhorar o desempenho da aplicao reduzindo o trfego de rede e executando operaes compiladas do SQL no usurio. Porque os procedimentos armazenados so compilados, as plantas da execuo so armazenadas em uma tabela do sistema; isto permite que o procedimento armazenado execute muito rapidamente. Os procedimentos armazenados podem realar a segurana actuando como um ponto de acesso controlado aos dados sensveis. Podem igualmente aumentar o vigor e a confiabilidade do tratamento distribudo centralizando crtico ou a lgica da aplicao do ncleo em uma posio (o usurio). Dependendo do usurio que de base de dados voc est conectando a, voc pode poder passar argumentos da entrada, recuperar valores em argumentos da sada, recuperar um status do resultado do procedimento armazenado, e recuperar jogos do resultado. Em alguns casos voc pode poder especific argumentos da entrada e recuperar argumentos da sada using variveis do ligamento. Ler o captulo que cobre a base de dados a que
Connecting Gupta Objects to Databases

2-

Chapter 1

Overview

voc est conectando para encontrar se procedimentos armazenados de sustentaes dessa base de dados, como chamar a, e todo o outro especfico da informao a essa sustentao de base de dados para procedimentos armazenados.

1-

Connecting Gupta Objects to Databases

Transaes
Uma transao um jogo das aes em uma base de dados que so atmicoatomicallyall tratados das aes so feitas permanente na base de dados ou nenhumas delas so. Normalmente, voc faz todas as aes permanentes preparando e executando a indicao da CONSIGNAO (ou chamando SqlCommit); se voc quer abandonar todas as aes (undo as), voc prepara e executa a indicao do ROLLBACK. No h nenhuma funo do SAL que corresponde a SqlCommit. Para rolar para trs uma transao, voc prepara e executa a indicao do ROLLBACK. Por exemplo:
SqlPrepareAndExecute (hSql,' ROLLBACK')

Cada um COMETE ou a indicao do ROLLBACK define um limite novo da transao; todas as indicaes cujas as aes so feitas permanentes com COMETEM (ou undone com ROLLBACK) so parte do espao da transao. Para a informaes adicionais, ler Autocommit na pgina 1-3 e os punhos, os contextos, e as conexes na pgina 1-9.

Connecting Gupta Objects to Databases

2-

Chapter 2

Initializing and Testing Your Connection


Este captulo descreve como conectar uma aplicao de SQLWindows a uma base de dados, como testar a conexo, e como configurar a iniciao do cliente.

Connecting Gupta Objects to Databases

2-

Sumrio de que a fazer


1. Instalar seu software do protocolo de rede (tal como TCP/IP, NetBIOS, NetBEUI, nomeado Tubulao, ou IPX/SPX) e o software do cliente-client-side fornecido por seu vendedor da base de dados (software da camada do acesso de rede, biblioteca do API, e ferramentas e utilidades do cliente). Seguir as instrues na documentao fornecida com aqueles produtos.

2.

Chapter 2

Verific que voc pode conectar a sua base de dados do alvo using uma ferramenta apropriada fornecida por seu base de dados ou outro provedor. Se voc precisa a ajuda, falar a seu administrador da rede ou de base de dados. Algumas das ferramentas disponveis so: Informix-ILogin.
exe

Initializing and Testing Your Connection


Oracle-SQL*Plus (se voc tem uma verso suficientemente recente da base de dados), prova a pro aplicao de C Monitor do Ca-OpenIngres-CA-OpenIngresTerminal Microsoft SqlServer-ISQL/w Vantagem Sybase-SybaseSQL 3. 4. 5. 6. Instalar SQLWindows e escolher o SQLRouters apropriado para as bases de dados que voc estar conectando a. Configurar a origem de dados do alvo. (Isto se aplica somente se voc est conectando usando ODBC.) Configurar a iniciao de SQLWindows editando a lima de SQL.INI apropriadamente. Verific que voc pode conectar base de dados do alvo using o software de Gupta funcionando SQLTalk para Windows.

A informaes adicionais em etapas 4 a 6 fornecida aps a seo seguinte.

Antes de conectar
Esto aqui algumas coisas a verific para fora antes de tentar conectar uma aplicao de SQLWindows a uma base de dados:
N a m q u i n a

de cliente:

Ser certo que todos os componentes de software alistados nas notas de liberao esto instalados no computador do cliente. Verific que voc pode conectar base de dados do alvo using as ferramentas apropriadas fornecidas pelo vendedor da base de dados. Ler a documentao fornecida
2Connecting Gupta Objects to Databases

Chapter 2

Initializing and Testing Your Connection Configurando u m a o r i g e m d e d ad o s de ODBC

pelo vendedor a aprender sobre tais ferramentas e como us-las para verific a conexo entre seu cliente e a base de dados. Certific dea lima de SQL.INI contenha as indicaes apropriadas, e que os valores da palavra-chave esto especific corretamente. Para aprender mais sobre isto, ler o descanso deste captulo, a seguir ler os captulos que cobrem as bases de dados que voc est conectando a.
N a m q u i n a

do usurio:

Certific deo software de rede apropriado esteja funcionando. Ser certo que o usurio de base de dados est funcionando e isso a base de dados do alvo estve criada. Verific que voc tem um cliente de usurio com os privilgios corretos na base de dados. Nota: Consultar com seu administrador de base de dados e administrador de rede para toda a
ajuda que adicional voc possa precisar.

Configurando uma origem de dados de ODBC


Esta seo aplica-se somente se voc est conectando a uma base de dados using ODBC (como ao usurio 2000 de Microsoft SQL, DB2/400, Microsoft Access, e assim por diante). O seguinte procedimento descreve como usar o administrador de ODBC para adicionar e set up uma origem de dados.

Adicionando e setting-up uma origem de dados de ODBC


1. Selecionar o painel de controle do menu do comeo e navegar ao cone de ODBC. Dependendo do sistema de explorao, pode ser ficado situado dentro do cone administrativo das ferramentas. 2. 3. Na janela do administrador da origem de dados de ODBC, o clique adiciona.

A caixa de dilogo nova da origem de dados da criao indicada com a lista de excitadores de ODBC instalados em sua mquina. Selecionar o excitador apropriado desta lista, a seguir estalar o revestimento. Preencher a informao necessria na caixa de dilogo indicada, a seguir estalar a APROVAO. Voc come normalmente a informao que voc precisa de terminar esta caixa de dilogo de seu administrador de base de dados. Voc pode igualmente ler a ajuda em linha (ajuda do clique) ou a documentao fornecida
2Connecting Gupta Objects to Databases

4.

por seu vendedor do excitador de ODBC.

Connecting Gupta Objects to Databases

3-

5. A origem de dados que voc especific adicionada lista de origens de dados n a j a n e l a d o a d m i n i st ra d o r d a o ri g e m d a d o s de ODBC e a o O D B C . L i m a de INI. APROVAO d o c l i q u e a terminar.

de

Chapter 2

Initializing and Testing Your Connection

2-

Connecting Gupta Objects to Databases

Initializing S Q L W i n d o w s applications

O D B C . A l i m a de INI direto-directlyuse o administrador de ODBC para fazer todas as mudanas a sua lista de origens de dados de ODBC. Tambm, verific a documentao que vem com seu excitador de ODBC considerar se seu vendedor do excitador de ODBC igualmente suporta outras maneiras de modificar o O D B C . L i m a de INI. I m p o r t a n t e : No editar o

Aplicaes de inicializao de SQLWindows


Todas as aplicaes de Gupta (SQLWindows including prprio e todos seus componentes) leram uma lima de configurao antes de funcionar. O nome de defeito desta lima SQL.INI, mas voc tem a opo para especific uma lima de configurao de um nome diferente em uma posio da sua escolha. (Ns usaremos o nome SQL.INI durante todo esta documentao para referir a lima de configurao.) Para configurar a iniciao de sua aplicao, adicionar, suprimir, ou modificar das indicaes nesta lima. Voc pode usar um editor de texto, mas Gupta recomenda que voc usa a aplicao do administrador da conectividade que vem com colaborador da equipe. Se voc instalou outros produtos das tecnologias de Gupta em sua mquina, uma lima de configurao j existe. Se voc instala SQLWindows no mesmo diretrio que os outros produtos das tecnologias de Gupta, o programa de instalao adiciona indicaes novas ou modifica indicaes existentes na lima.
N o t a : Todas as indicaes da lima

velha de SQL.INI so transferidas no novo.

Trajeto de busca para SQL.INI


Antes de funcionar uma aplicao de SQLWindows, ser certo que uma lima de configurao pode ser encontrada. O nome de arquivo do defeito SQL.INI, e procurarado por como como segue: Se este uma aplicao do projetar-design-time, e voc especific o nome e a posio de sua lima de configurao sob o artigo de menu das ferramentas/preferncias, que o nome e a posio sero usados. Se somente um nome especific, esse nome estar no lugar de SQL.INI e as posies procuraradas como descritas abaixo. Para ver se h uma aplicao de SQLWindows no tempo de execuo, a varivel de sistema SqlINI verific primeiramente. Se um nome de arquivo (e opcionalmente a posio) sos nessa varivel, esses nome e posio usados para encontrar a lima de configurao. Se no a seqncia da busca abaixo usada. Quando uma aplicao precisa de procurarar pela lima de configurao, olha primeiramente no diretrio que voc especific na varivel de ambiente de SQLBASE. Se no encontrado l, a ordem da busca para esta lima : 1.Diretrio atual.
Connecting Gupta Objects to Databases

3-

Chapter 2

Initializing and Testing Your Connection

2.\

diretrio

do sqlbase na movimentao atual.

2-

Connecting Gupta Objects to Databases

Initializing S Q L W i n d o w s applications

3.Diretrio de raiz na movimentao atual. 4.Diretrios especific pela varivel de ambiente do TRAJETO. 5.O diretrio do executvel. 6.O diretrio de sistema de Windows. 7.O diretrio de Windows.
N o t a : Embora o colaborador 3.1 da equipe e mais atrasado permita a existncia de limas de

configurao mltiplas em uma nica mquina, voc deve ainda ser cauteloso quando voc tem limas mltiplas. A causa a mais comum de diificulties da conectividade uma aplicao que conecta a uma lima de configurao quando o colaborador acredita que est conectando a uma lima diferente. Compreender a seqncia da busca acima e estar certo que sua aplicao est encontrando a lima direita.

Como SQL.INI estruturado


SQL.INI uma lima de texto simples que voc modifica a ferramenta do administrador da conectividade no colaborador da equipe (recomendado) ou em usar todo o editor de texto do ASCII. A lima subdividida em sees. Cada seo comea com um nome de seo, uma corda de carter fechada nos suportes quadrados. Cada seo contem zero ou mais indicaes. Cada indicao comea com uma palavra-chave, seguida pelo sinal de iguais e por uma seqncia de valores vrgula-comma-separated: [mais section_identifier] palavra-chave 1=parameter1 (, parameter2...) keyword2=parameter1 (, parameter2...)

...

keywordn=parameter1 (, parameter2...) Quando este livro descreve um valor de defeito para uma palavra-chave de SQL.INI, este o valor como definido na lima de SQL.INI antes que um usurio a edite, ou o valor supor quando a indicao que contem a palavra-chave ausente ou comentada para fora. A ordem em que as sees aparecem no significativa. Para a maioria de sees, a ordem de palavras-chaves dentro de uma seo no igualmente significativa. A nica exceo a ordem das palavras-chaves do comdll [win32client .dll] na seo, e a ordem das palavras-chaves do remotedbname nas sees atribudas a cada base de dados individual. Quando uma aplicao de SQLWindows inicializa, tenta fazer uma conexo a uma base de dados que segue a ordem dos routeres alistados using o comdl l palavraschaves; para cada router, a aplicao tenta conectar a uma base de dados na ordem especific pelas palavras-chaves apropriadas do remotedbname.
Connecting Gupta Objects to Databases

3-

Chapter 2

Initializing and Testing Your Connection

Se voc conecta nativa a Oracle, ou a Sybase, a palavra-chave do longbuffer na lima de SQL.INI especific o nmero de bytes mximo do tipo de dados longo colunas para recuperar,

2-

Connecting Gupta Objects to Databases

Initializing S Q L W i n d o w s applications

e trunca bytes adicionais. Entretanto, esta palavra-chave no controla quanto dados longos podem ser introduzidos ou actualizados. Se voc conecta a Microsoft SQL o usurio ou a qualquer origem de dados using ODBC, controles desta palavra-chave quanto dados longos podem ser buscados, introduzido ou actualizado.

C o mo ed i ta r S QL .IN I
Gupta recomenda using o administrador da conectividade editar SQL.INI. Esta ferramenta faz a sintaxe que verific para facilitar sua introduo de dados e para impedir muitos erros inadvertidos. Entretanto, se voc escolhe usar um editor de texto em SQL.INI, ser consciente destas directrizes: Alistar parmetros para uma palavra-chave na ordem indicada na seo da sintaxe da pgina da referncia para essa palavra-chave. Os parmetros podem ser carteres alfanumricos do ASCII somente-onlyno relevos, hfens, ou perodos. Verific com cuidado a sintaxe de uma indicao da palavra-chave; na maioria dos casos, voc usa vrgulas (no espaos) para separar parmetros. Pr cada indicao sobre uma linha. Introduzir retorno ou todos os marcadores do "end-of-line" na indicao pode causar erros. Os comentrios pr em suas prprias linhas um pouco do que coloc comentam nas mesmas linhas que indicaes da palavra-chave. Usar um semicolon (;) como o primeiro carter da linha de comentrio. Uma aplicao de SQLWindows l o SQL.INI somente quando inicializa. Para forar uma aplicao para ver algumas mudanas que voc fizer lima, voc deve parar ou retirar de todo o software de Gupta que funciona no cliente (SQLWindows including e todas as aplicaes running criados com o SQLWindows), a seguir reinicia a aplicao.
I m p o r t a n t e : Se voc usa um tratamento de textos em vez de um editor de texto para modificar

a lima de SQL.INI, excepto a lima como o "texto somente." Se no, o tratamento de textos
introduz os cdigos de controle que corrompem a lima.

P a la v r a s - c h a ve s de S QL .IN I a u sa r-se
Para aprender como set up a lima de SQL.INI, ler o captulo apropriado para a base de dados a que voc est conectando. A lima de SQL.INI deve sempre ter pelo menos um c o m d l l indicao identificar o SQLRouter a ser usado ao conectar a uma base de dados.
Importante:

Connecting Gupta Objects to Databases

3-

Testando a conexo
Para testar a conexo entre o software de Gupta que funcionam em sua mquina de cliente e a base de dados, SQLTalk funcionado para Windows e a tentativa para ver uma tabela que voc sabe esto na base de dados e isso voc tem a permisso para olhar. Importante: Ser certo verific que voc pode conectar base de dados do alvo using as
ferramentas fornecidas por seu vendedor da base de dados (ou a outro) antes de using SQLTalk.

Chapter 2

Testando a conexo com o SQLTalk


sql d a l i m a e x e c u t v e l . instalao de Gupta.

1. Comear SQLTalk para Windows funcionando a conversa do


exe

2.

Initializing and Testing Your Connection


no diretrio de Selecionar a sesso, conect-la do SQLTalk para que a barra de menu de Windows indique a caixa de dilogo da conexo. Preencher o nome de base de dados, seu nome de usurio, e sua senha.

3.

Verific que a informao da conexo parece n a c a i x a d e c o n e x e s atual do dilogo da conexo caixa-boxthis confirma que voc conectou com sucesso base de dados. Fim do clique na caixa de dilogo da conexo. Selecionar a lima, retir-la do SQLTalk para a barra de menu de Windows.

4.

Se voc v a informao da conexo na ca ix a d e co n ex e s atual da caixa de dilogo da conexo, voc configurou corretamente sua mquina de cliente para comunicar-se com a base de dados do alvo de uma aplicao de SQLWindows. Nota: Para mais informao em como usar SQLTalk, ler os tpicos de ajuda em linha de
Gupta para SQLTalk.

Conexo a Sybase
Voc no precisa de funcionar certificados da opinio do catlogo antes de funcionar suas aplicaes de SQLWindows de encontro ao sistema 11 .x de Sybase e mais elevado, porque SQLRouter/Sybase pode alcanar o catlogo de sistema diretamente sempre que necessrio. Entretanto, voc precisa de obter privilgios apropriados para cada base de dados que de Sybase voc conectar a antes que voc possa funcionar SQLWindows ou uma aplicao voc cria com o SQLWindows.
2Connecting Gupta Objects to Databases

Para cada tal base de dados: 1.O incio de uma sesso como um usurio que tenha o administrador de sistema privilegia.

2.Funcionar o programa

S Y B P R I V S . EXE

(situado no diretrio

de instalao de Gupta).

Connecting Gupta Objects to Databases

3-

Chapter 2

Initializing and Testing Your Connection Conexo a Oracle

Conexo a Oracle
Para conectar a Oracle, voc pode ter que fazer determinadas mudanas a seu registro de Windows. Voc deve igualmente criar determinadas vistas para alcanar tabelas e para funcionar procedimentos armazenados.

Modificando o registro
Para permitir que seu software do cliente-client-side de Oracle (bibliotecas e SQL*Net de OCI) trabalhe junto corretamente, voc precisa de modificar Oracle seciona de seu registro de Windows. Se voc est usando a verso 8.0.x do software do cliente-client-side de Oracle, adicionar uma das seguintes entradas ao registro:
verso do Cliente-Client-side Entrada a adicionar ao registro

Verso 8.0.x

ORAOCI=ORA83.DLL e ORAOCI=ORA84.DLL

N o t a : A verso 9.x de Oracle no exige nenhuma modificaes ao registro.

Criando vistas
Antes que voc possa alcanar tabelas em Oracle voc deve funcionar o certificado apropriado das vistas. Voc deve igualmente funcionar vistas especficas script para poder executar procedimentos armazenados em Oracle.

Tabelas de acesso e procedimentos armazenados em Oracle 8 e 9


Para alcanar tabelas em Oracle 8 ou 9, voc deve executar o certificado VIEW8. ORA. Para executar procedimentos armazenados, voc deve executar o certificado PLSVIEW8. ORA. Estes certificados so ficados situados no diretrio de instalao de Gupta. Quando voc funciona o certificado, assinar sobre como o sistema (ou um outro usurio com a mesma autoridade que o sistema). Igualmente, se voc precisa de alcanar o cliente do sistema, adicionar uma linha com a palavra-chave substitute na seo [oragtwy] da lima SQL.INI como segue:
substitute=SYSSQL.,

N o t a : Pr um perodo aps

SYSSQL, a seguir uma vrgula, a seguir

pressionar a chave DO RETORNO.


2Connecting Gupta Objects to Databases

Para mais informao sobre a utilizao da palavra-chave substitute com Oracle, ler s u b s t i t u i r na pgina 4 - 1 0 .

Connecting Gupta Objects to Databases

3-

Funcionando um certificado da vista

1.

Comear SQLTalk do grupo do colaborador da equipe de Gupta no menu do programa, ou funcionando o sqltalk da lima executvel. exe no diretrio de instalao de Gupta. Selecionar a sesso, conect-la da barra de menu. Preencher a caixa de dilogo com a informao apropriada. 4. Chapter A lima seleta, abre da barra de menu. 2 5. *). 3. Uma vez que voc conectado, fim do clique.

2.

6.

Initializing and Testing Your Connection


Selecionar a lima VIEW8. ORA (ou PLSVIEW8. ORA) no diretrio de instalao de Gupta se usando Oracle8. Selecionar a lima VIEW7. ORA (ou PLSVIEW7. ORA) se usando Oracle7. Selecionar a sesso, executar o certificado da barra de menu. Deixar o certificado funcionar concluso. (Ignorar todas as mensagens de erro sobre as tabelas que esto sendo deixadas cair.) 8. Selecionar a lima, retir-la do menu.

Na lima do tipo caixa da seleo, selecionar todas as limas (*.

7.

Nota: Para mais informao em como usar SQLTalk, ler os tpicos de ajuda em linha de
Gupta para SQLTalk.

Especific a base de dados em sua aplicao


Em sua aplicao de SQLWindows, voc pode identificar o nome da base de dados para conectar com varivel de sistema de SqlDatabase. Por exemplo, se o nome da base de dados ORDENS, incluir a indicao:
Ajustar SqlDatabase='

ORDENS'

em sua aplicao antes de chamar SqlConnect. Certificar-se que o nome da base de dados que voc atribui exatamente o mesmo como o nome voc atribui ao remotedbname da palavra-chave no SQL.INI lima-filesee as palavraschaves da seo SQL.INI no captulo que discute sua base de dados do alvo. (Se voc est usando ODBC, se certificar que o nome que voc atribui a SqlDatabase o nome voc se usou quando setting-up os dados fontesourcesee configurar uma origem de dados de ODBC na pgina 2-3.)
2Connecting Gupta Objects to Databases

Troubleshooting problems

Problemas da pesquisa de defeitos


Esta seo discute alguns dos problemas que podem se levantar ao conectar aplicaes de SQLWindows a suas base de dados e maneiras possveis os resolver. Ele

Connecting Gupta Objects to Databases

3-

Chapter 2

Initializing and Testing Your Connection

igualmente tem uma tabela de alguns dos erros que voc pode encontrar ao funcionar aplicaes de SQLWindows junto com sugestes para a fixao elas.

Conexo dos problemas


Quando uma aplicao de SQLWindows inicializa, l a lima de SQL.INI. Quando a aplicao ler [cliente win3 2. seo dessa lima, do DLL] carrega todo o DLLs especific no comdl l indicaes. A aplicao tenta conectar base de dados chamando a funo apropriada em cada DLL carregada. Se o DLL encontra a base de dados pedida, emite uma base de dados conecta o pedido. Se o DLL no come nenhuma resposta, retorna a "falha conectar" o erro aplicao, que chama ento a funo apropriada no DLL seguinte que foi carregado. Isto continua at que ou uma conexo esteja estabelecida ou todo o DLLs estiver tentado. Se voc tem o problema conectar sua aplicao de SQLWindows a sua base de dados do alvo: 1.Verific com seu administrador de base de dados que a base de dados do alvo esteja funcionando. 2.Verific que voc pode conectar base de dados de sua mquina de cliente, primeiramente com as ferramentas nativas da base de dados do cliente (ou o equivalente), ento com o SQLTalk para Windows. 3.Ler a seo na pesquisa por SQL.INI mais cedo neste captulo. Caso necessrio e prtico, rebatizar temporariamente outras cpias de SQL.INI de modo que sua cpia desejada seja nica com o nome original. No esquecer inverter o processo de rebatismo depois que voc determinou a fonte do problema. SQL.INI arquiva em sua mquina (que possvel se voc instala produtos diferentes das tecnologias de Gupta em diretrios diferentes), a lima que voc modifica no pde ser esse que est sendo usado no tempo da iniciao. Verific a ordem em que os diretrios so procurarados pelo SQL.INI lima-filerefer a o t r a j e t o d e b u s c a p a r a S Q L . I N I na pgina 2 - 5 .
I m p o r t a n t e : Se voc tem mltiplo

4.Certific deo comdl

apropriado l indicaes aparea no

[win32client. seo do DLL] da lima de SQL.INI. (Lido

a seo d a s p a l a v r a s - c h a v e s de SQL.INI em cada captulo que discute uma base de dados a que voc est conectando para mais informao sobre o comdl l palavra-chave.)

5.Certific de voc configure suas

indicaes do remotedbname corretamente. (Esta etapa no se aplica se voc est conectando a sua base de dados using ODB C.)
2Connecting Gupta Objects to Databases

Troubleshooting problems

Truncamento de dados LONGOS


Se voc encontra que os dados das colunas LONGAS dos dados esto sendo truncados, voc no pode ter ajustado o valor para a palavra-chave do fe r do longbuf altamente bastante na lima de SQL.INI. Para mais informao, ler a pgina da referncia do longbu f f e r no captulo apropriado para a base de dados que voc est conectando a.

Connecting Gupta Objects to Databases

3-

Chapter 2

Initializing and Testing Your Connection

Chamadas de registo de ODBC API


Se voc conecta a sua base de dados using ODBC, voc pode seguir a seqncia das chamadas do API feitas em nome de sua aplicao de SQLWindows incluindo o odbctrace=on da indicao e o odbctracefile=filename da indicao na lima de SQL.INI. Ler as pginas da referncia do ile do odbctrace e do odbctracef no captulo apropriado para a base de dados que voc est conectando para a mais informao.

Verific as notas de liberao


As notas de liberao que acompanham este produto contm a informao til sobre: erros conhecidos reparados em uma liberao particular, assim como aqueles ainda - proeminente estar listado. Se o erro foi relatado, voc pode pedir tecnologias de Gupta o status nele.
Problema-ProblemsAll

o software ambiente-environmentsCertified certificados so aqueles que foram testadas realmente por Gupta Tecnologia. Anotar que a matriz de verses certificadas da base de dados e verses do sistema de explorao est disponvel em nosso Web site, http://www.guptaworldwide.com.
Os ambientes e

2-

Connecting Gupta Objects to Databases

Troubleshooting problems

Contatando o suporte laboral


Antes de contatar o suporte laboral com um problema, gravar por favor a seguinte informao: 1. Nmeros de verso de: Microsoft Windows Gupta SQL Windows Gupta SQLRouters O software de comunicao O usurio de base de dados

2.Verso e data
DLL.

do

SQLWNTM.

Biblioteca

de ligao dinmica do

3.Uma quantidade de recursos disponveis da memria e do sistema de explorao. 4.Nome do componente com o problema (nome dos executables que funcionam, ou GPF, ou mensagem de erro). 5.O texto exato de algumas mensagens de erro. 6.ndices das seguintes limas: SQL.INI limas da iniciao do Cliente-Client-side para sua base de dados Algumas limas de registro Determinar se voc pode reproduzir o problema consistentemente. Escrever para baixo as etapas assim que voc pode ajudar seu coordenador do suporte laboral a reproduzir o problema. Uma aplicao de amostra que recreia simplesmente e confiantemente o problema a mais rpida e a maioria de maneira eficaz come seu problema resolvido. Se voc est relatando um problema da documentao, anotar o nmero de pgina no livro impresso, ou o nome de arquivo e o ttulo do tpico na ajuda em linha.

Connecting Gupta Objects to Databases

3-

E r r o s e m an e i ra s sel e ci on a d o s rep a r -lo s


A tabela abaixo das lista alguns dos erros que podem ser gerados ao funcionar uma aplicao de SQLWindows, e sugerem remdios possveis.
Problema Razo Remdio

111 - SQL relao da aplicao entrado recursively.

Chapter 2

135 - Invlido punho do cursor. 201 - Nenhum compilado comando.

Initializing and Testing Your Connection


Verific a sintaxe de seu SQL indicao. Verific concatenao do SQL multi-line indicaes. Certificar-se do
longbuffer

203 - SQL invlido indicao.

A aplicao re-entered a biblioteca SQLWNTM. DLL ao esperar a pedido do usurio. SQLWNTM. O DLL reprincipiante somente de diferente Um punho do SQL foi passado a uma funo antes de uma conexo vlida era estabelecido. A aplicao est tentando a executar uma operao, e qualquer um que tem no compilado uma indicao de SQL, ou No. a indicao existe mais por muito tempo (para Voc construiu uma indicao de SQL com sintaxe ilegal, ou espaado indicao sobre diversas linhas sem concatenando as partes da indicao corretamente. O valor binrio convertido excede um ou outro a capacidade de comunicaes API ou a corrente ajuste do fer do longbuf.

Verific para ver se h re-entrancyentrancy (para exemplo, mensagens de SAM_Timer durante operaes assncronas) e incapacit-los durante o usurio Estabelecer uma conexo vlida antes de passar um punho do SQL aa funo. Compilar indicaes de SQL antes executando os.

321 - Introduzir ou actualizar o valor demasiado por muito tempo. 9279 - No pode encontrar protocolo especific entrada.

o ajuste no mais baixo do que valor do API das comunicaes.

30002 - Invlido ligao de controle seqncia

Certific deo comdl l as indicaes so especific corretamente na lima de SQL.INI. Verific isso voc forneceu todo o necessrio palavras-chaves na lima de SQL.INI isso aplica-o ao SQLRouters As funes do SAL usadas para invocar Fazer as chamadas no correto os procedimentos armazenados foram seqncia. (Lido a r m a z e n a d o chamados no o s p r o c e d i m e n t o s secionam do seqncia invlida. captulo para sua base de dados para mais informao.) Geralmente esta mensagem significa que o protocolo especific no pode encontrar a entrada est procurando no [win32client .dll] seo de a lima de SQL.INI.
2Connecting Gupta Objects to Databases

Aplicaes de amostra

Problema

Razo

Remdio

30003 - Invlido tentativa de obter a resultado subseqente jogo.

Uma tentativa foi feita de come o seguinte resultado ajustado de um procedimento armazenado mesmo

Aplicaes de amostra
Sobre as aplicaes de amostra

A extremidade de jogos do resultado pode ser detectado verific bandeira do bEndOfResult no lista de parmetro para o SAL funo que come o resultado seguinte jogo. O cdigo de erro 30003 retornado

Diversos provam aplicaes de SQLWindows so instalados no subdirectrio das AMOSTRAS do diretrio de instalao para SQLWindows. As aplicaes de amostra alistaram nesta seo ilustram vrios aspectos de codificar uma aplicao de SQLWindows conjuntamente com um router e uma base de dados particulares. A lista de aplicaes de amostra nesta seo organizada pela base de dados do alvo.

Usurio de Microsoft SQL


As seguintes duas aplicaes de amostra ilustram a chamada de procedimentos armazenados no usurio de Microsoft SQL que o resultado do retorno ajusta.
O A P P d um exemplo de chamar as funes OdrExecuteProc e OdrGetNextResults do SAL. ODBSAL1. O A P P d um exemplo de usar as funes OdrPrepareProc e OdrPrepareNextResults do SAL. ODBSAL2.

Para mais informao sobre estas funes, ler os procedimentos armazenados da seo no captulo 4..
N o t a : Antes de funcionar estas aplicaes, ser certo instalar (no usurio) a base de dados das

publicaes da amostra fornecida com o usurio de Microsoft SQL.

Oracle
A aplicao de amostra O R A D E M O . O A P P mostra como usar a funo SqlPLSQLCommand do SAL para chamar um procedimento armazenado de Oracle. Para mais informao sobre esta funo, ler os procedimentos armazenados

da seo na pgina 4-12.

Sistema 11 .x de Sybase
As seguintes aplicaes de amostra ilustram caractersticas que voc pde se usar ao funcionar uma aplicao de SQLWindows de encontro ao sistema 11 .x de Sybase: SQLSYBS1 .APP mostra como usar as extenses do SAL suportadas por SQLRouter/Sybase. SQLSYBS2 .APP mostra como usar as extenses do SAL suportadas por SQLRouter/Sybase. SQLSYBS3 .APP mostra como usar as extenses especficas SybPrepareProc e SybPrepareNextResults do SAL. SQLSYBS4. O APP mostra como SELECIONAR e INTRODUZIR dados binrios (por exemplo, dados de IMAGEM) using a funo SqlSetLongBindDatatype. SQLSYBS5 .APP mostra como introduzir ou actualizar dados binrios longos (por exemplo, dados de IMAGEM) using a funo SybWriteText.

Connecting Gupta Objects to Databases

3-

Para mais informao sobre as funes prolongadas do SAL para o sistema 11 .x de Sybase e informao relacionada, ler os procedimentos armazenados das sees e, a escrita e a recuperao de dados da IMAGEM e do TEXTO no captulo 6, e de coluna da IMAGEM datilografam dentro o captulo 1..

Chapter 3

Connecting to Microsoft SQL Server


Este captulo descreve como conectar aplicaes de SQLWindows verso 6.5 e 7.0 do usurio de Microsoft SQL.

Antes de voc comear


Ler por favor todo o captulo 1, vista geral e captulo 2, inicializando e testando sua conexo antes de ler este captulo. Voc conecta aplicaes de SQLWindows s origens de dados com o router de Gupta ODBC, SQLRouter/ODBC de ODBC. Este router conforma-se especificao de ODBC 3.0 at os nveis 1 e 2 do ncleo (isto , ao nvel de ODBC 2.0 dentro da especificao 3.0). Ver o captulo 8 para mais no excitador de ODBC.

Chapter 3 Autocommit
revelia.

Quando voc conecta a Microsoft SQL o usurio 6.5 e 7.0, o autocommit est ligada As indicaes de lngua da definio (DDL) de dados, como CRIAM A TABELA, so cometidas sempre imediatamente, mesmo se o autocommit est.

Connecting to Microsoft SQL Server

Se o autocommit est, e voc disconexo da base de dados ou retira a aplicao (se normalmente ou anormalmente) antes de cometer ou de rolar para trs uma transao pendente, o excitador de ODBC emite um pedido do ROLLBACK ao usurio de base de dados. Para a informao de fundo no autocommit, ler Autocommit na pgina 1-3. Para a informao na preservao do contexto do autocommit e do cursor, ler a preservao do contexto do cursor na pgina 3-2.

Preservao do contexto do cursor


O usurio de Microsoft SQL suporta a preservao do contexto do cursor (CCP). Nas aplicaes de SQLWindows que conectam a Microsoft SQL o usurio, o CCP est revelia. Se o CCP est ligada (e o autocommit est), voc pode continuar a executar indicaes de SQL preparadas (sem as preparar outra vez) mesmo depois que voc comete a transao que aquelas indicaes so uma parte de. Se o CCP est, entretanto, voc no pode executar aquelas indicaes de SQL uma vez que voc comete a transao sem as preparar outra vez. Para a informao de fundo, ler a preservao do contexto do cursor na pgina 1-7.

Tipos de dados suportados


Uma aplicao de SQLWindows suporta todos os tipos de dados do usurio de Microsoft SQL, incluindo:
3Connecting Gupta Objects to Databases

decimalThe- pode ser configurado para fornecer uma preciso mxima de 38 dgitos decimais (o mximo do defeito 28 dgitos decimais). Entretanto, 22 dgitos decimais so a preciso mxima que SQLWindows suporta para este tipo de dados.
o usurio

Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server Tipos de dados suportados

numericThe- pode ser configurado para fornecer uma preciso mxima de 38 dgitos decimais (o mximo do defeito 28 dgitos decimais). Entretanto, 22 dgitos decimais so a preciso mxima que SQLWindows suporta para este tipo de dados
o usurio

o usurio e a sustentao de SQLWindows uma preciso mxima de 17 dgitos decimais para este tipo de dados.
dobrar preciso-precisionBoth

Os dados decimais e numricos tipo-typeswhich so idntico-identicalallow respresentao exata de um valor fracionrio. Este preciso dobro desigual ou flutuador (a que preciso dobro traada), que permitem tipicamente somente valores aproximados.
Nota:

A tabela abaixo mostra o tipo de dados mappings entre SQLWindows e usurio de Microsoft SQL:
CORDA (TIMESTAMP BINRIO do CARVO ANIMAL de 254 ou poucos bytes) 254 ou poucos bytes) ( VARBINARY (254 ou poucos bytes) VARCHAR (254 ou poucos bytes) (CARVO ANIMAL BINRIO de 255 ou mais bytes) (255 ou mais bytes) IMAGEM TEXTO VARBINARY (255 ou mais bytes) VARCHAR (255 ou mais bytes) BOCADO DECIMAL PRECISO DOBRO FLUTUADOR INT DINHEIRO REAL NUMRICO SMALLINT SMALLMONEY TINYINT (TIMESTAMP BINRIO do CARVO ANIMAL de 254 ou poucos bytes) 254 ou poucos bytes) ( VARBINARY (254 ou poucos bytes) VARCHAR (254 ou poucos bytes) (IMAGEM BINRIA do CARVO ANIMAL de 8000 ou poucos bytes) 8000 ou poucos bytes) ( TEXTO VARBINARY (8000 ou poucos bytes) VARCHAR (8000 ou poucos bytes) BOCADO DECIMAL PRECISO DOBRO FLUTUADOR INT DINHEIRO REAL NUMRIC O SMALLINT SMALLMONEY TINYINT

CORDA LONGA

NMERO

3-

Connecting Gupta Objects to Databases

DATETIME DATETIME DO DATE/TIME SMALLDATETIME SMALLDATETIME

Tipo da coluna da identidade


As tabelas do usurio do SQL podem igualmente incluir uma coluna da IDENTIDADE. Se uma coluna deste tipo definida quando uma tabela est criada, os valores nesta coluna (que voc no pode actualizao) automaticamente esto incrementados ou decrescidos (por uma quantidade que voc pode se ajustar) todas as vezes lhe criam uma fileira nova. Isto faz este tipo de dados til para automaticamente gerar valores como nmeros de srie, nmeros de ordem, e semelhante.

Cordas vazias
No usurio 6.5 e 7.0 de Microsoft SQL, se voc tenta introduzir a corda vazia em uma coluna da corda de carter do variar-varying-length (ou para tentar actualizar Microsoft SQL Server tal coluna com a corda vazia), a base de dados armazena um espao SQLWindows preferivelmente. Version 6.5 Version 7.0 Para a informao de fundo, ler a seo anula, cordas vazias, e espaos na pgina 1-15.

Nveis da isolao
O usurio de Microsoft SQL define quatro nveis da isolao nos termos de sujo l, nonrepeatable l e fileiras fantasmas. (Ver nveis da isolao na pgina 1-12 para as definies destes termos.) SQL_TXN_READ_UNCOMMITTED - Sujo l, nonrepeatable l, e as fileiras fantasmas so tudo possveis. SQL_TXN_READ_COMMITTED - Sujo l impedido; nonrepeatable l e as fileiras fantasmas so possveis. SQL_TXN_REPEATABLE_READ - Sujo l e nonrepeatable l so impedidos; as fileiras fantasmas so possveis. SQL_TXN_SERIALIZABLE - Sujo l, nonrepeatable l, e as fileiras fantasmas todas so impedidas (as transaes so serializable). SQLWindows suporta o RO, RL, CS, e RR de quatro nveis da isolao. Quando uma aplicao de SQLWindows conecta a Microsoft SQL o usurio, estes nveis da isolao esto traados aos nveis da isolao do usurio do SQL como segue:

Trao nivelado da isolao


U surio do SQL Windows M ic ro so ft SQL RO

SQL_TXN_READ_UNCOMMITTED
Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server Palavras-chaves como nomes da tabela e de coluna

S QL Windows RL CS RR

Usurio d e Mi c r o s o f t SQL

SQL_TXN_READ_COMMITTED SQL_TXN_REPEATABLE_READ SQL_TXN_SERIALIZABLE

N o t a : O usurio de Microsoft SQL traa SQL_TXN_REPEATABLE_READ

a SQL_TXN_SERIALIZABLE; assim, o CS realmente equivalente ao RR.

revelia, uma aplicao de SQLWindows funciona de encontro ao usurio 6.5 e 7.0 de Microsoft SQL com um nvel da isolao de RL. Para mais informao de fundo, ler n v e i s
da isolao

na pgina

1-12.

Palavras-chaves como nomes da tabela e de coluna


Para nomear uma tabela ou uma coluna no usurio de Microsoft SQL com uma palavrachave reservado (tal como SELETO ou ONDE) em uma aplicao de SQLWindows, voc deve usar letras do lower-case ou da misturado-mixed-case; se voc usa todas as letras de caixa, voc come um erro.

Travar o intervalo de parada


O valor de defeito para o intervalo de parada do fechamento com o usurio de Microsoft SQL zero. Isto significa que no h nenhum intervalo de parada do fechamento. Para mais informao de fundo, intervalo de parada
do fechamento lido

na pgina 1 - 1 4 .

Conectividade nativa
Usos ODBC do usurio 6.5 e 7.0 de Microsoft SQL como sua relao nativa do chamar-call-level. O usurio de Microsoft SQL traa automaticamente indicaes do SAL ao apropriado funo-functionsno ODBC chamadas de ODBC aparece em suas aplicaes de SQLWindows.
N o t a : O nvel de sintaxe e de semntica do SQL suportadas ncleo; a conformidade de ODBC

API o nvel II..

3-

Connecting Gupta Objects to Databases

Actualizaes posicionadas
As aplicaes de SQLWindows podem executar actualizaes posicionadas (ONDE CORRENTE de actualizaes do cursor) quando conectadas a Microsoft SQL o usurio. Para aprender como codificar uma actualizao posicionada, ver actualizaes posicionadas na pgina 1-17.
I m p o r t a n t e : Voc no pode fazer actualizaes posicionadas em um jogo do resultado

retornado por um procedimento armazenado. Voc deve sempre incapacitar modalidade ajustada do resultado antes de chamar um procedimento armazenado.

Para a informaes adicionais em procedimentos armazenados, ver procedimentos armazenados na pgina 3-11. Para a informao de fundo em modalidade ajustada do resultado, ver modalidade ajustada do resultado na pgina 1-18.

Modalidade ajustada do resultado


O usurio de Microsoft SQL fornece a sustentao backend para cursores scrollable (os cursores ajustados do resultado que enrolam ambos para trs e enviam). Conseqentemente, voc no pode criar jogos do resultado da parte frontal (FERS) se voc gira sobre modalidade ajustada do resultado. Voc deve girar sobre modalidade ajustada do resultado para ter mais de um resultado ajustado aberto ao mesmo tempo. Se a modalidade ajustada do resultado est, voc deve buscar todas as fileiras de um jogo do resultado antes que voc possa SELECIONAR um outro jogo do resultado. Se voc tenta SELECIONAR um resultado para se ajustar antes de buscar todas as fileiras de um jogo previamente recuperado do resultado, voc come o erro:
[Microsoft] [excitador do usurio de ODBC SQL] a conexo ocupada com resultado para um outro hstmt I m p o r t a n t e : revelia, a modalidade ajustada do resultado est para o melhor desempenho.

Tambm, voc d e v e sempre desligar modalidade ajustada do resultado antes de chamar um procedimento armazenado, mesmo quando conectando atravs de ODBC ou do DB VELHO.

Para a informao de fundo em modalidade ajustada do resultado e em cursores scrollable, ler modalidade ajustada do resultado na pgina 1-18. Para mais informao em FERS, ler jogos do resultado da parte frontal na pgina 1-8.

AJUSTAR a indicao
O usurio de Microsoft SQL suporta a indicao do JOGO. Voc usa esta indicao para ajustar vrias opes dequery-processing para a durao de sua sesso do trabalho (isto , at que voc disconexo), ou para a durao de um procedimento armazenado.
Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server

Quando voc executa a indicao do JOGO de uma aplicao de SQLWindows, voc faz assim que especific um punho especfico do SQL. Todavia, a opo que voc se ajusta aplica-se a todas as indicaes executadas em sua conexo atual base de dados, no obstante o punho do SQL voc especific quando voc executa aquelas indicaes.

3-

Connecting Gupta Objects to Databases

Semntica de SqlDirectoryByName

Por exemplo, voc pode usar o JOGO para limitar o nmero de fileiras retornadas em um jogo do resultado, como:
SqlPrepareAndExecute (hSql1,' AJUSTOU ROWCOUNT 10')

Se voc recupera ento um jogo do resultado, a base de dados retorna mais de 10 fileiras, mesmo se voc especific um punho excepo d o h S q l 1 quando voc executa a indicao SELETA, por exemplo:
SqlPrepareAndExecute (hSql2,' SELECIONAM * DE MYTABLE')

Ler o usurio 6.5 e de Microsoft SQL a documentao 7.0 em linha para mais informaes sobre a indicao do JOGO.

Semntica de SqlDirectoryByName
Quando uma aplicao de SQLWindows conectou a Microsoft SQL o usurio, chamar a funo S q l D i r e c t o r y B y N a m e retorna todas as bases de dados alistadas n o O D B C . L i m a de INI. Esta lista no necessariamente a mesma que a lista de todas as bases de dados acessveis ao usurio de Microsoft SQL.

Palavras-chaves de SQL.INI

Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server

buffrow
Descrio da do sintaxe defeito

Esta seo contem as palavras-chaves que voc precisa ou pde querer se usar na lima de SQL.INI ao conectar uma aplicao de SQLWindows ao usurio 6.5 e 7.0 de Microsoft SQL. Usar esta palavra-chave para controlar a proteco dos dados entre seus aplicao de SQLWindows e usurio de Microsoft SQL.
[odbcrtr]

0
l u s t r a r row=number_of_rows

da seo

Esta palavra-chave controla a proteco dos dados entre seus aplicao de SQLWindows e usurio de Microsoft SQL. Diminuindo o valor amarelo da fileira, o tempo de resposta pode ser melhorado significativamente. Ao contrrio, os valores maiores aumentam a produo de dados, mas alongam o tempo de resposta. Os valores para o buffrow podem variar de 0 a 32767. Atribuir um valor no garante que o INMESSAGE atual do suficiente tamanho para cumprir o pedido. Nestes casos, o nmero de fileiras protegidas pode ser consideravelmente menos. O valor de defeito de zero faz com que o usurio de Microsoft SQL reverta aos dados da proteco baseados no nmero de fileiras que cabero dentro do tamanho de amortecedor atual de INMESSAGE.

3-

Connecting Gupta Objects to Databases

Exemplo

Esta indicao instrui o usurio de Microsoft SQL para executar nicos esforos da fileira no amortecedor de INMESSAGE:
row=1 amarelo

Notas

A palavra-chave amarela da fileira no tem nenhum efeito na maneira em que os dados so protegidos e transportados atravs da rede. Voc pode igualmente configurar a proteco dos dados para os punhos individuais do SQL using a funo do rAll de SqlSetParamete. Fileira presumida do nBuf f tem sido atribuda j o valor desejado para o hSql do
SqlSetParameterAll (hSql, DBP_BUFFROW, nBuffRow, FALSO, VERDADEIRO)

Chapter 3

Identificar o SQLRouters disponvel entre SQLWindows (ou uma aplicao de cliente criada com o SQLWindows) e a base de dados.

[win32client.dll] comdll

Connecting to Microsoft SQL Server

l=communication_dll_name do comdl

Esta palavra-chave identifica o nome de arquivo de um DLL de SQLRouter. Voc pode pr Section Syntax de um comdl l indicao na lima de SQL.INI. O valor do mais Description communication_dll_name a usar-se para SQLRouter/ODBC sqlodb32.

comdll=sqlodb32 Example Notes Para informao relacionada, lido conectar a ordem da busca na pgina 1-6. Definir o registro de atividade do router da base de dados e permitir o registo.

og

Section Syntax Description [win32client. odb32] log=fully_qualified_path_name Especific todo o pathname vlido da lima aps a palavra-chave. Se a lima no existe, est criada. Se a lima j existe, overwritten (a menos que a opo de /Fa especific - vem abaixo). Uma vez que a indicao do registro foi adicionada lima de SQL.INI, registrar est executado automaticamente. Voc pode especific umas ou vrias das opes alistadas abaixo aps inteiramente - o pathname qualificado para personalizar a sada: /Bx - excluir valores variveis do ligamento /Fa - adicionar a lima existente /FD - dados do esforo da exposio
3Connecting Gupta Objects to Databases

Chapter 3

Connecting to Microsoft S Q L Server

/Ld - /Tx lido ou escrito dos

dados LONGOS da exposio excluir timestamps Incorporar as opes exatamente como mostrado, mantendo letras de caixa as letras caixas e lower-case lower-case. Este exemplo chama para uma lima de registro que no inclua timestamps em entradas (para conservar o espao de disco), e exposies a entrada e a sada de todos
[win32client. odb32] log= c:\gupta\mssqlsrv.log /Tx /Ld

Exemplo

amortecedor longo
Especific o nmero de bytes mximo de dados LONGOS da coluna para recuperar ou emitir. Sections
[odbcrtr]

Default 32 Kbytes. Ajustar um valor menos do que o defeito far com que o valor seja restaurado ao defeito.
r=number_of_bytes do longbu f f e

Esta palavra-chave Syntax Description ajusta o tamanho do amortecedor que prende dados LONGOS. O tamanho mximo limitado somente por confinamentes do sistema de explorao. Normalmente, o tamanho ptimo que evita a perda dos dados a coluna a maior dos dados LONGOS a ser emitidos ou recuperado pela aplicao de SQLWindows. Um amortecedor maior usa mais memria mas reduz o trfego de rede; um amortecedor menor usa menos memria mas trfego de rede dos aumentos. Se o amortecedor demasiado pequeno prender todos os dados, o excesso est truncado. Se especific, a indicao do fe r do longbuf aplica-se a todas as bases de dados conectadas a usar ODB C.. Recomenda-se que voc no especific um valor para o longbuf fer maior do que o tamanho LONGO mximo da coluna em algumas das tabelas armazenadas em algumas daquelas bases de dados. Esta indicao ajusta a 64K o nmero de bytes mximo dos dados LONGOS da coluna a recuperar de ou Example emitir a toda a base de dados conectada a usar ODBC.
longbuffer=65536

Voc pode igualmente ajustar esta varivel em um programa de Notes SQLWindows chamando o rA ll de S q lS e tP a ra m e te com o parmetro de DBP_LONGBUFFER (definido em SQLNWKCN. APL). Isto permite que voc costure o tamanho do amortecedor aplicao.

od bctrace
Seguir todas as chamadas ao ODBC API. [odbcrtr] Section
3-

Connecting Gupta Objects to Databases

SQL.INI keywords

Defeito fora Odbctrace= da sintaxe {em|d e f } A descrio o gerente do excitador de Microsoft ODBC pode seguir todas as chamadas feitas ao ODBC API. A informao do trao conservada na lima de registro cujo o pathname dado na indicao do ile do odbtracef. O exemplo esta indicao permite o traado de chamada de ODBC API. odbctrace=on

odbctracefile
Especific o pathname da lima de trao para chamadas de ODBC API.

Section [odbcrtr] root_directory \ sql.


registro

Default Syntax Description


ile=fully_qualified_filename do odbctracef

Esta palavra-chave especific o pathname da lima de trao para chamadas de ODBC API. Esta Example palavra-chave no tem nenhum efeito a menos que a palavra-chave da raa do odbt for ajustada a "em" - considera o odbctrace na pgina 3-9. Esta indicao especific que a lima de trao est chamada odbc. o registro, e aquele que ficado situado no \ registra o diretrio no c do cliente: movimentao.
odbctracefile=c: \ registros \ odbc. registro

remotedbname

Usar esta palavra-chave para especific nomes de base de dados e seus associados Section Syntax Description conectam cordas.
[odbcrtr] =db_name remoto do dbname, connect_string

o db_name especific o nome de base de dados; no pode exceder oito carteres. connect_string o exato conecta a corda que voc se usar para conectar origem de dados de ODBC. Tipicamente, esta entrada comea com a corda "DSN=" a especific o nome da origem de dados especific na ferramenta do administrador de ODBC. O valor especific em connect_string pode incluir espaos encaixados. No pr comentrios sobre a mesma linha com a indicao do "remotedbname". Tudo do db_name de seguimento da vrgula extremidade de linha interpretado como a corda da conexo.
Connecting Gupta Objects to Databases

3-

Chapter 3 Connecting to Microsoft S Q L Server Examples: Supr que voc definiu duas origens de dados no administrador de ODBC. Um para Microsoft SqlServer 7.0 (com um nome da origem de dados de "MS SqlServer 7.0"), e

3-

Connecting Gupta Objects to Databases

SQL.INI keywords

outro para uma base de dados visual de FoxPro (com um nome da origem de dados "do DB visual de FoxPro"). As indicaes do remotedbname olham o gosto:
remotedbname=SS70, remotedbname=VFP de DSN=MS SqlServer 7.0, DB de DSN=Visual FoxPro

Sua aplicao de Gupta ajusta o "SqlDatabase varivel" a "SS70" (para conectar origem de dados de SqlServer) ou a "VFP" (para conectar base de dados de FoxPro), ajustou SqlUser e SqlPassword apropriadamente, e emitiu a chamada de SqlConnect (). SqlRouter/ODBC obtem toda a informao necessria da configurao mantida pelo utiltity do administrador de ODBC.
Nota adicional:

O parmetro do remotedbname no necessrio para as aplicaes construdas using o colaborador da equipe de Gupta. Exige-se se voc quer usar a utilidade de SqlTalk para conectar origem de dados de ODBC. Ao conectar a toda a origem de dados de ODBC onde o nome da origem de dados foi configurado pela ferramenta do administrador de ODBC, sua aplicao de Gupta pode contornear o parmetro do remotedbname completamente, e ajusta o SqlDatabase v a r i v e l ao nome real da origem de dados de ODBC. Using o exemplo acima, se voc emite as seguintes indicaes (supr que SqlUser e SqlPassword esto ajustados):
Ajustar SqlDatabase = do "chamada SqlConnect MS SqlServer 7.0" (o hSql)

ento seu programa de Gupta conectar corretamente origem de dados de Microsoft SqlServer 7.0 sem usar o parmetro do remotedbname em SQL.INI.

Procedimentos armazenados
Os procedimentos que contm indicaes de SQL e a lgica do procedimento podem ser compilados e armazenado no usurio do SQL. Estes procedimentos podem retornar mais de um jogo do resultado, e podem aceitar variveis do ligamento da entrada (variveis de anfitrio) como argumentos. (Ver procedimentos igualmente armazenados na pgina 1-21.)

Criando procedimentos armazenados


O usurio de Microsoft SQL vem "fora da caixa" com um nmero de procedimentos armazenados disponveis. Ver a documentao do usurio do SQL para mais informao. O DBA (administrador de base de dados) pode criar procedimentos armazenados adicionais para voc. O DBA precisa de deix-lo saber sobre uns procedimentos armazenados. Voc pode igualmente criar seus prprios procedimentos armazenados dentro de uma aplicao de SQLWindows. Para fazer isto, executar a indicao do PROCEDIMENTO
Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server

da CRIAO no usurio chamando as funes apropriadas do SAL, tais como SqlImmediate, SqlPrepareAndExecute, ou SqlPrepare seguido por SqlExecute.

3-

Connecting Gupta Objects to Databases

SQL.INI keywords

N o t a : Para mais informao em procedimentos armazenados e na indicao do

PROCEDIMENTO da CRIAO, ver a documentao do usurio de Microsoft SQL.

Suprimindo de procedimentos armazenados


O DBA pode suprimir de procedimentos armazenados no usurio do SQL executando a indicao do PROCEDIMENTO da GOTA. Voc pode igualmente suprimir de procedimentos armazenados dentro de uma aplicao de SQLWindows. Para fazer isto, executar a indicao do PROCEDIMENTO da GOTA no usurio chamando as funes apropriadas do SAL, tais como SqlImmediate, SqlPrepareAndExecute, ou SqlPrepare seguido por SqlExecute.
Para mais informao na indicao do PROCEDIMENTO da GOTA, ver a documentao do usurio de Microsoft SQL. Para a informao em SqlImmediate, SqlPrepareAndExecute, SqlPrepare, e SqlExecute, vem a r e f e r n c i a d e f u n o d o S Q L
Nota:
Windows.

Executando procedimentos armazenados


Dois pares novos de funes do SAL foram introduzidos para suportar a chamada de procedimentos armazenados. O primeiro par :
OdrExecuteProc-OdrExecuteProcExecute o procedimento armazenado

especific.
OdrGetNextResults - come o resultado seguinte ajustado

(eventualmente) do procedimento armazenado que foi invocado com


OdrExecuteProc.

O segundo par :
OdrPrepareProc-OdrPrepareProcPrepare (compilar) a invocao do

procedimento armazenado especific.


OdrPrepareNextResults-OdrPrepareNextResultsPrepare a indicao

(implicada) que come o jogo seguinte do resultado (eventualmente).


I m p o r t a n t e : Voc deve desligar modalidade ajustada do resultado antes de chamar um

procedimento armazenado. SqlExecute ou uma funo que implique a execuo de uma declarao preparada tal como SalTblPopulate - devem ser chamados aps ter chamado OdrPrepareProc ou OdrPrepareNextResults.

Uma vez que o jogo do resultado foi recuperado, posicionar o cursor ao primeiro e as
Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server

fileiras subseqentes no resultado ajustado chamando o SqlFetchNext funcionam. (Para mais informao sobre esta funo, ver a r e f e r n c i a d e f u n o d e
SQLWindows.)

3-

Connecting Gupta Objects to Databases

SQL.INI keywords

Cdigo do exemplo
O fragmento do cdigo abaixo cria o procedimento armazenado GetNames e armazena-o no usurio. Os retornos de procedimento todos os valores na coluna conhecida e na coluna do nmero da tabela dos quartos, ento todos os valores na coluna conhecida da tabela dos convidados. O cdigo invoca o procedimento armazenado using a sintaxe do procedimento da estenografia ODBC. (Ver a referncia de programador de Microsoft ODBC 2.0 e o guia de SDK para mais informao na sintaxe do padro e da estenografia para chamar procedimentos armazenados). Os valores atuais da coluna que esto sendo buscados so armazenados no em variveis: s t r N a m e e: n N u m b e r do primeiro jogo do resultado, e na varivel: s t r N a m e do segundo jogo do resultado.
Chamada SqlSetResultSet (hSql, FALSOS) Ajustar o strProcedure=' CRIAM O PROCEDIMENTO GetNames COMO' | | ' Nome SELETO, nmero dos quartos' | | ' Nome SELETO dos convidados' Chamada SqlPrepareAndExecute (hSql, strProcedure) Se OdrExecuteProc (hSql,' {chamada GetNames ()}',': strName,: lao do nNumber') Se SqlFetchNext (hSql, nRet) ... Mais se (nRet=FETCH_EOF) Se no OdrGetNextResults (hSql,': strName', bEndOfResults) Se bEndOfResults Ruptura

No fragmento acima do cdigo, as funes OdrExecuteProc e OdrGetNextResults foram chamados. Alternativamente, voc pode preparar a invocao do procedimento armazenado como uma etapa separada substituindo OdrExecuteProc com:
Se OdrPrepareProc (hSql,' {chamada GetNames ()}',': strName') se SqlExecute (hSql)...

e a chamada a OdrGetNextResults com:


Se no OdrPrepareNextResults (hSql,': strName,: nNumber', bEndofResults) Se no bEndOfResults Se SqlExecute (hSql)...

Cdigos de erro para procedimentos armazenados


Dois cdigos de erro novos foram definidos para procedimentos armazenados: seqncia da ligao de controle 30002Invalid. Este erro ocorre quando voc no chama as funes na seqncia correta. A
Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server

seqncia correta OdrExecuteProc seguido por umas ou vrias chamadas a

3-

Connecting Gupta Objects to Databases

SQL.INI keywords

OdrGetNextResults, ou OdrPrepareProc seguiram por umas ou vrias chamadas a OdrPrepareNextResults. tentativa 30003-Invalid de obter o jogo seguinte do resultado. Este erro ocorre quando uma tentativa feita de conseguir um outro resultado se ajustar de um procedimento armazenado chamando OdrPrepareNextResults seguido por uma chamada a SqlExecute, a SalTblPopulate, ou outra funo que executa uma declarao preparada, mesmo que no haja no mais jogo do resultado a recuperar. A extremidade de jogos do resultado pode ser detectada verific a bandeira do bEndOfResult lista de parmetro de OdrGetNextResults e de OdrPrepareNextResults. O cdigo de erro 30003 retornado se voc tenta recuperar um outro resultado ajustado mesmo que o bEndOfResult seja VERDADEIRO.

Extenses do SAL
Esta seo descreve as extenses de lngua evolutivas (SAL) da aplicao que permitem que voc trabalhe com procedimentos armazenados na verso 6.5 e 7.0 do usurio de Microsoft SQL.
N o t a : Para mais informao sobre procedimentos armazenados e ODBC, ver a referncia de

programador de Microsoft ODBC 2.0 e o guia de SDK. Para mais informao sobre procedimentos armazenados e usurio de Microsoft SQL, ver a documentao em linha do usurio do SQL (estalar o c o n e e m l i n h a d o s l i v r o s d o u s u r i o do SQL n o g r u p o d e p r o g r a m a d a s f e r r a m e n t a s do usurio do SQL).

rExecute Proc do Od
bOk=OdrExecute

Proc

da sintaxe

(hSql, strProc, strIntoList)

Punho do Sql: hSql Corda: strProc Corda: strIntoList


hSql

dos parmetros - um punho que identifique um contexto da conexo base de dados. strProc - o texto da chamada ao procedimento armazenado a ser executado. lista do strIntoList-The em variveis em que os valores ajustados do resultado de procedimento armazenado (eventualmente) so retornados.

O bOk do retorno

do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO esta funo executa um procedimento armazenado no usurio de Microsoft SQL.
Connecting Gupta Objects to Databases

se falha. A

descrio

3-

Chapter 3

Connecting to Microsoft S Q L Server

Separar as variveis alistadas no strIntoList com vrgulas e preceder cada nome varivel com uns dois pontos. Se os retornos de procedimento armazenado zeram fileiras, as variveis dentro

3-

Connecting Gupta Objects to Databases

SQL.INI keywords

sustento do strIntoList o que valores tiveram antes da chamada a OdrPrepareNextResults. Se voc sabe o procedimento armazenado no executa uma indicao SELETA, usa o rNul l do st como o valor para o strIntoList. Se um jogo do resultado retornado, seus pontos associados do cursor a imediatamente antes que a primeira fileira do jogo do resultado. Para ajustar-se em variveis no strIntoList aos valores da coluna da primeira fileira, chamar SqlFetchNext. Para obter fileiras subseqentes no jogo do resultado, continuar a chamar SqlFetchNext. Uma vez todas as fileiras em um jogo dado do resultado foram recuperadas, come o resultado seguinte ajustado (eventualmente) chamando OrdGetNextResults. Limitaes Exemplos das notas A funo OdrExecuteProc no aceita variveis do ligamento. (Comparar OdrPrepareProc na pgina 3-17, que aceita variveis do ligamento.) Ver igualmente OdrGetNextResults na pgina 3-15. Este exemplo executa o mysp do procedimento armazenado. Este procedimento no aceita nenhum argumento, e retorna um jogo do resultado que consiste em uma nica coluna. A chamada ao procedimento armazenado especific using a sintaxe da estenografia ODBC. O tipo de dados de na varivel: o strOut para combinado o tipo de dados da coluna retornado pelo procedimento armazenado.
Chamar OdrExecuteProc (hSql,' {mysp da chamada ()}',': strOut')

lts do rGetNextResu do Od

Ver igualmente a aplicao de amostra ODBSAL1. APP no subdirectrio das AMOSTRAS do diretrio de instalao de Gupta SQLWindows.

Punho do Sql dos sults do bOk=OdrGetNextRe da sintaxe (hSql, strIntoList, bEndOfResults): hSql Corda: strIntoList Booleano: bEndOfResults hSql dos parmetros - um punho que identifique um contexto da conexo base de dados. lista do strIntoList-The em variveis em que os valores ajustados do resultado de procedimento armazenado (eventualmente) so retornados. bEndofResults - a varivel booleana que indica se no havia no mais resultado ajustase para ser recuperada. O bOK do retorno do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. Descrio se o procedimento armazenado invocado chamando OdrExecuteProc retorna mais de um jogo do resultado, uso OdrGetNextResults come os segundos e jogos
Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server

subseqentes do resultado.

3-

Connecting Gupta Objects to Databases

Examples Notes

SQL.INI keywords

Separar as variveis alistadas no strIntoList com vrgulas e preceder cada nome varivel com uns dois pontos. Se as fileiras zero dos retornos de procedimento armazenado, as variveis no sustento do strIntoList o que valores tiveram antes da chamada a OdrPrepareNextResults. Se um jogo do resultado retornado, seus pontos associados do cursor a imediatamente antes que a primeira fileira do jogo do resultado. Para ajustar-se em variveis no strIntoList aos valores da coluna da primeira fileira, chamar SqlFetchNext. Para obter fileiras subseqentes no jogo do resultado, chamar repetidamente SqlFetchNext. Uma vez todas as fileiras em um jogo dado do resultado foram recuperadas, come o resultado seguinte ajustado (eventualmente) outra vez chamando OrdGetNextResults. Se OdrGetNextResults chamado e no h no mais jogo do resultado, o bOk est ajustado a FALSO e a curvatura OfResults ajustada PARA RECTIFICAR. Exemplos das notas Ver igualmente OdrExecuteProc na pgina 3-14. Este exemplo come o jogo seguinte do resultado (eventualmente) retornado pelo procedimento armazenado invocado com OdrExecuteProc. O hSql do parmetro denota o mesmo punho que foi usado na chamada a OdrExecuteProc.
Chamada OdrGetNextResults ( h S q l , ' : strOut', bEndOfResults)

Ver igualmente a aplicao de amostra ODBSAL1. APP no subdirectrio das AMOSTRAS do diretrio de instalao de Gupta SQLWindows.

rGetReturnStatus do Od
bOk=OdrGetReturnStatus da sintaxe (hSql, Number_Variable_Name) hSql dos parmetros - um punho que identifique um contexto da conexo base de dados. O nReturn do retorno do valor o valor do retorno do procedimento Description armazenado. Esta funo come o valor do retorno de um procedimento que armazenado voc deve compilar o procedimento armazenado using OrdPrepareProc somente. Se voc usa OrdExecuteProc, a seguir esta funo falhar. Se voc usa OrdExecuteProc, a varivel do nmero estar ajustada a 0. No conter a informao de status do retorno real. O status de chamada para os procedimentos armazenados ligeiramente diferente se voc usa OrdGetReturnStatus. Voc tem que usar a sintaxe completa de ODBC para procedimentos armazenados. Voc tem que especific o nome varivel do ligamento que esperado conter a informao de status do retorno na chamada a OrdPrepareProc. Ver o exemplo do cdigo abaixo. Esta funo deve ser chamada somente depois que todos os jogos do resultado deste procedimento armazenado foram recuperados. A sintaxe usada em OrdPrepareProc diferente agora. Voc tem que especific um nome
Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server

varivel do ligamento antes que chamada a fim usar OrdGetReturnStatus. Se voc chama

3-

Connecting Gupta Objects to Databases

SQL.INI keywords

OrdGetReturnStatus sem especific um nome varivel em OrdPrepareProc, nenhum erro retornado. Mas a varivel do retorno conter 0.
Chamada SqlConnect (hSql) Chamada OrdPrepareProc (hSql,' {: nReturn=call MySP (: param1,: param2)}',': bind1') Chamada SqlExecute (hSql) Quando os <process de SqlFetchNext (hSql, nFetchInd) buscaram o data> Chamada OrdGetReturnStatus (hSql, nReturn)

OdrPrepareProc
bOk
da sintaxe = punho

de OdrPrepareProc (hSql,

strProc, strIntoList) Sql: hSql Corda: strProc Corda: strIntoList hSql dos parmetros - um punho que identifique uma conexo base de dados. strProc - o texto da chamada ao procedimento armazenado a ser preparado. lista do strIntoList-The em variveis em que os valores ajustados do resultado de procedimento armazenado (eventualmente) so retornados. O bOk do retorno do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. Descrio Esta funo prepara (compila) a invocao de um procedimento armazenado para a execuo subseqente no usurio de Microsoft SQL. A invocao preparada do procedimento armazenado deve ento ser executada explicitamente (chamando a funo de SqlExecute) ou implicitamente (chamando, por exemplo, a funo de SalTblPopulate). Separar as variveis alistadas no strIntoList com vrgulas e preceder cada nome varivel com uns dois pontos. Se as fileiras zero dos retornos de procedimento armazenado, as variveis no sustento do strIntoList o que valores tiveram antes da chamada a OdrPrepareNextResults. Se voc sabe o procedimento armazenado no executa uma indicao SELETA, usa o r N u l l do st como o valor para o strIntoList. As variveis do ligamento da entrada na lista de argumento da chamada a um procedimento armazenado devem ser alistadas explicitamente using o nome varivel precedido por uns dois pontos; voc no pode usar marcadores do parmetro - o ponto de interrogao (?) sintaxe - como definida em ODBC.
Connecting Gupta Objects to Databases

Limitaes

3-

Chapter 3

Connecting to Microsoft S Q L Server

Exemplos das notas

O usurio de Microsoft SQL permite que um procedimento armazenado seja definido para passar valores de volta ao programa de chamada com os valores do ligamento da sada, um resultado da funo, ou ambos. Se o procedimento armazenado tem parmetros de sada, o strProc deve incluir variveis do ligamento da sada na lista de argumento para combinar aqueles parmetros. Entretanto, os valores atribudos 2 aqueles parmetros de sada no usurio no come atribudos s variveis do ligamento da sada em sua aplicao de SQLWindows; a aplicao nunca "considera" aqueles valores. Aps a chamada aos retornos de procedimento armazenado, os valores das variveis do ligamento da sada so indeterminados. Lido recuperando parmetros de sada dos procedimentos armazenados mais tarde neste captulo. Do mesmo modo, um resultado da funo retornado pelo procedimento armazenado nunca recebe de volta aplicao de SQLWindows. Conseqentemente, voc no pode atribuir o resultado da funo de um procedimento armazenado a uma varivel ou us-lo em uma expresso. Ver igualmente OdrPrepareNextResults na pgina 3-18. Este exemplo prepara o myproc do procedimento armazenado. Este procedimento supor para aceitar dois parmetros entrados - as variveis do ligamento: v1 e: necessidade v2 para ter sido declarado do tipo apropriado - e para retornar um jogo inicial do resultado que consiste em uma nica coluna. A chamada ao procedimento armazenado especific using a sintaxe da estenografia ODBC. O tipo de dados de na varivel: o strOut para combinado o tipo de dados da coluna do primeiro jogo do resultado retornado pelo procedimento armazenado.

OdrPrepareNextResults

bOk da sintaxe = punho de OdrPrepareNextResults (hSql, strIntoList, bEndOfResults) Sql: hSql Corda: strIntoList Booleano: bEndOfResults hSql dos parmetros - um punho que identifique uma conexo base de dados. lista do strIntoList-The em variveis em que os valores ajustados do resultado de procedimento armazenado (eventualmente) so retornados. bEndofResults - a varivel booleana que indica se no havia no mais resultado ajustase para ser recuperada. O bOk do retorno do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. A descrio se o procedimento armazenado especific na chamada a OdrPrepareProc retorna mais de um jogo do resultado, uso OdrPrepareNextResults seguiu pela execuo
3Connecting Gupta Objects to Databases

SQL.INI keywords

explcita (que chama

Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server

Funo de SqlExecute) ou execuo implcita (que chama, por exemplo, a funo de SalTblPopulate) para come o jogo seguinte do resultado. Separar as variveis alistadas no strIntoList com vrgulas e preceder cada nome varivel com uns dois pontos. Se as fileiras zero dos retornos de procedimento armazenado, as variveis no sustento do strIntoList o que valores tiveram antes da chamada a OdrPrepareNextResults. Se um jogo do resultado retornado, seus pontos associados do cursor a imediatamente antes que a primeira fileira do jogo do resultado. Para ajustar-se em variveis no strIntoList aos valores da coluna da primeira fileira, chamar SqlFetchNext. Para obter fileiras subseqentes no jogo do resultado, continuar a chamar SqlFetchNext. Alternativamente, voc pode chamar SalTblPopulate para buscar as fileiras dos dados no jogo do resultado. Uma vez todas as fileiras em um jogo dado do resultado foram recuperadas, come o resultado seguinte ajustado (se o procedimento armazenado tem uma outra indicao que SELETA pode executar) outra vez chamando OrdPrepareNextResults.
Ver igualmente o exemplo

Se OdrPrepareNextResults chamado e no h no mais jogo do resultado, o bOk est ajustado a FALSO e os bEndOfResults so ajustados PARA RECTIFICAR. OdrPrepareProc Este exemplo come o jogo seguinte do resultado (eventualmente) retornado pelo procedimento armazenado especific em OdrPrepareProc. O hSql do parmetro denota o mesmo punho que foi usado na chamada a OdrPrepareProc
Chamada OdrPrepareNextResult ( h S q l , ' : strOut', bEndOfResults)

Limitaes em procedimentos armazenados

Ver igualmente a aplicao de amostra ODBSAL2. APP no subdirectrio das AMOSTRAS do diretrio de instalao de SQLWindows. Ao usar procedimentos armazenados, as limitaes que seguem aplicam-se.

Modalidade ajustada do resultado da inutilizao


Sempre modalidade ajustada do resultado da inutilizao antes de chamar um procedimento armazenado.

Nenhuns cursores scrollable


O cursor associado com um jogo do resultado retornado por um procedimento armazenado pode enrolar para a frente somente.

Nenhumas actualizaes posicionadas


Voc no pode fazer actualizaes posicionadas em um jogo do resultado retornado por um procedimento armazenado.
3-

Connecting Gupta Objects to Databases

SQL.INI keywords

Nenhuns valores da sada


Ao chamar um procedimento armazenado que tenha parmetros de sada em sua lista de parmetro, voc deve incluir uma varivel do ligamento da sada (do tipo apropriado) na lista de argumento da chamada para cada tal parmetro. Entretanto, os valores retornados pelo procedimento armazenado no usurio no come atribudos queles variveis output do ligamento no cliente, assim que sua aplicao de SQLWindows no pode alcanar aqueles valores. Aps a chamada aos retornos de procedimento armazenado, os valores de todas as variveis do ligamento da sada so indeterminados. Similarmente, se os retornos de procedimento armazenado um resultado da funo, esse valor no podem ser alcanados por sua aplicao de SQLWindows. Conseqentemente, o valor do retorno no pode ser atribudo a uma varivel em sua aplicao de SQLWindows, ou ser usado em uma expresso.

Recuperando parmetros de sada dos procedimentos armazenados


Normalmente, quando voc executa um procedimento armazenado que retorne valores em parmetros de sada chamando OdrPrepareProc seguido por SqlExecute, voc no pode recuperar aqueles valores da sada, mesmo que voc especific variveis do ligamento como parmetros de sada quando voc chama o procedimento armazenado. A nica maneira que uma aplicao de SQLWindows pode recuperar dados de um procedimento armazenada nos jogos do resultado (eventualmente) que os retornos de procedimento armazenado. Voc pode trabalhar em torno desta limitao executando o procedimento armazenado dentro de um grupo de indicaes. O grupo de indicaes recupera o parmetro de sada do procedimento armazenado como um "resultado se ajustou", a seguir dos retornos que o "resultado ajustou" a sua aplicao de SQLWindows. Por exemplo: Chamada OdrPrepareProc (hSql, o `declara o `do int do @outparm || `do exec GTIPROC_BASICS do ` || `o mais @test do `= o 1 || @result do `= `da sada
do @outparm

|| @outparm SELETO do `') Est aqui um exemplo mais completo para ilustrar a chamada de um procedimento armazenado e a recuperao de um parmetro de sada. Em resumo, porque o procedimento armazenado criado abaixo, voc chama: OdrPrepareProc (como mostrado acima).
Connecting Gupta Objects to Databases

3-

Chapter 3

Connecting to Microsoft S Q L Server

SqlExecute posio (o jogo aos apelidos ajustados primeiro "resultado" dos autores'). SqlFetchNext para recuperar as fileiras no primeiro jogo do resultado. OdrPrepareNextResults, SqlExecute, e SqlFetchNext para come o "resultado ajustado" da indicao SELETA de encontro ao foo do `da tabela'.

3-

Connecting Gupta Objects to Databases

OdrPrepareNextResults, SqlExecute, e SqlFetchNext para recuperar o valor do outparm-outparmthis so o ltimo jogo do resultado gerado como parte do grupo de comando fora do procedimento armazenado. Ajustar o strSqlCreate = o `CRIAM o `de PROC GTIPROC_BASICS || `o int o mais @test, `da sada do int do @result || `COMO o au_lname SELETO do `dos autores || `C1 SELETO do foo onde c1 = o mais @test o ` || @result SELETO do `= mais @test * 10 ` || Sucesso do RETORNO -100/* do `* ` Se VERDADEIRO Quando SqlError do retorno RECTIFICAR Chamada SqlPrepareAndExecute (hSql, `do procedimento GTIPROC_BASICS da gota do `) Chamada SqlPrepareAndExecute (hSql, strSqlCreate) Ajustar o strSqlExecute = o `declaram o `do int do @outparm || `do exec GTIPROC_BASICS do ` || `o mais @test =: o mais nTest o ` || @result do `= `da sada do @outparm || `SELETO do @outparm do ` = 2 os mais nTest ajustados Chamada OdrPrepareProc (hSql, strSqlExecute, `: chamada SqlExecute do `do dfAu_lname) (hSql) Quando NO nFetchInd Chamada SqlFetchNext (hSql, nFetchInd) Chamada OdrPrepareNextResults (hSql, `: `do dfFoo, chamada SqlExecute dos bMoreResults) (hSql) Ajustar o nFetchInd = FALSO Quando NO nFetchInd Chamada SqlFetchNext (hSql, nFetchInd)

Captulo 3 que conecta a Microsoft S QL o usurio

Chamada OdrPrepareNextResults (hSql, `: `, bMoreResults do dfOutParm) Chamada SqlExecute (hSql) Ajustar o nFetchInd = FALSO Quando NO nFetchInd Chamada SqlFetchNext (hSql, nFetchInd)

3-22

objetos de conexo de Gupta s bases de dados

G T

Objt

D t b

________________________________________

Captulo 4

Conexo a Oracle
Este captulo descreve como conectar aplicaes de SQLWindows s bases de dados de Oracle using o router nativo de Gupta, SQLRouter/Oracle. Descreve (na ordem alfabtica) as vrias caractersticas de Oracle que podem afetar a maneira que voc escreve sua aplicao de SQLWindows ou a maneira se comporta quando voc lhe conecta com o SQLRouter/Oracle.

Objetos de conexo de Gupta s bases de dados

4-1

Antes de voc comear


Ler por favor todo o captulo 1, vista geral e captulo 2, inicializando e testando sua conexo antes de ler este captulo. Voc conecta aplicaes de SQLWindows s bases de dados de Oracle using o router nativo, SQLRouter/Oracle, ou o router de ODBC, SQLRouter/ODBC. Para aprender sobre a conexo com o router nativo, ler este captulo; para aprender sobre a conexo com o router de ODBC, ler o captulo 6, conectando s bases de dados using ODBC.

Autocommit
autocommit da sustentao dos usurios de base de dados de Oracle. Autocommit est revelia. Se voc gira sobre o autocommit, indicaes de DML (lngua de manipulao de dados) (tais como a ACTUALIZAO, a INSERO, e a SUPRESSO) e DDL (lngua de definio de dados) as indicaes (como CRIAR A TABELA e a TABELA da GOTA) so cometidas imediatamente.
N o t a : Com uma base de dados de Oracle, as indicaes de DDL so cometidas sempre

imediatamente, mesmo se o autocommit est.

Se voc gira sobre o autocommit, voc no pode preparar uma indicao de SQL, a seguir no a executa pocas mltiplas. Uma vez que voc executa a indicao, o contexto da preparao est perdido e voc deve prepar-lo outra vez. Se voc desliga o autocommit e gira sobre a preservao do contexto do cursor, entretanto, voc pode executar tempos mltiplos preparados de um estado (possivelmente com valores novos para algumas variveis do ligamento na declarao preparada) preservao lida do contexto do cursor na pgina 4-2 para mais informao. Para a informao de fundo sobre o autocommit, ler Autocommit na pgina 1-3.

Preservao do contexto do cursor


Preservao do contexto do cursor da sustentao de bases de dados de Oracle (CCP). Nas aplicaes de SQLWindows que conectam a Oracle, o CCP est revelia. Se o CCP est ligada (e o autocommit est), voc pode continuar a executar indicaes de SQL preparadas (sem as preparar outra vez) mesmo depois que voc comete a transao que aquelas indicaes so uma parte de. Se o CCP est, entretanto, voc no pode executar aquelas indicaes de SQL uma vez que voc comete a transao a menos que voc as preparar outra vez.
4Connecting Gupta Objects to Databases

Para a informao de fundo, ler a preservao do contexto do cursor na pgina 1-7.

Connecting Gupta Objects to Databases

5-

Chapter 4 Connecting to Oracle


Tipos de dados

Tipos de dados
A tabela que segue mostras o trao entre os tipos de dados suportou por uma aplicao de SQLWindows e pelos tipos de dados suportou por um usurio de base de dados de Oracle.
Tipo de dados de Gupta SQLWindows Tipo de dados de Oracle

CORDA

CARVO ANIMAL (254 ou poucos bytes) VARCHAR2 (254 ou poucos bytes) VARCHAR (254 ou poucos bytes) CRU ROWID MSLABEL CARVO ANIMAL (255 bytes) POR MUITO TEMPO (bytes 255 a 232 - 1) VARCHAR2 (255 a o s b y t e s do maxvarch) VARCHAR (255 a o s b y t e s do maxvarch) CRU (255 bytes) CRU LONGO (bytes 255 a 232 - 1) GRANDE OBJETO BINRIO (GOTA, 4 mximos GB) GRANDE OBJETO DO CARTER (CLOB, 4 GB mximos) MLSLABEL NMERO INT DATA (sem microssegundos)

CORDA LONGA

NMERO DATE/TIME

O valor d o m a x v a r c h na tabela acima 4.000 ou 32.000. Se voc tem uma varivel LONGA do ligamento da CORDA em uma indicao de SQL, e essa varivel do ligamento est associada com uma coluna VARCHAR ou VARCHAR2, voc pode armazenar no mximo 4.000 bytes nessa varivel. Se voc usa uma varivel do programa de PL/SQL que esteja associada com uma coluna VARCHAR ou VARCHAR2, voc pode armazenar no mximo 32.000 bytes nessa varivel.
N o t a : O tipo de dados de MLSLABEL aplica somente usurios de base de dados confiados de

Oracle.

Autoridade do DBA
O router de Gupta para Oracle permite que voc indique que voc deseja conectar a
4Connecting Gupta Objects to Databases

uma base de dados no papel do "sysdba". Voc faz este do administrador da conectividade adicionando "como o sysdba" corda da conexo de Oracle, segundo as indicaes desta linha do exemplo de SQL.INI:

Connecting Gupta Objects to Databases

5-

Chapter 4 Connecting to Oracle

remotedbname=ora9i, @ora9i como o sysdba

Depois disso, voc pode ajustar o usurio - identificao como o "sistema" durante um incio de uma sesso e o router conectar realmente com o "sistema como o sysdba". Se voc est conectando a Oracle using uma origem de dados VELHO do DB, a frase adicional na corda da conexo no exigida; o "sistema" conectar com os privilgios do sysdba.

PL/SQL dinmico
Indicaes de SQL dinmicas do uso das aplicaes de SQLWindows para executar operaes nas bases de dados que voc conecta a. Estas indicaes (tais como SELETO, a INSERO, ACTUALIZAO, CRIA A TABELA, e assim por diante) so compiladas e "sobre - - mosca executada" (quando a aplicao de SQLWindows funcionar). Oracle suporta (embora similar) caracterstica diferente um PL/SQL dinmico chamado. Esta caracterstica deixa-o atribuir um bloco de indicaes de PL/SQL a uma varivel de corda, a seguir para mandar a base de dados compilar e para executar esse bloco de indicaes no tempo de execuo. Voc no pode executar blocos dinmicos de PL/SQL em suas aplicaes de SQLWindows. Entretanto, voc pode conseguir um efeito similar em sua aplicao como segue: criar um procedimento armazenado que contenha as indicaes que de PL/SQL voc quer executar, invocam esse procedimento armazenado, a seguir deixam cair o procedimento antes de voc sada a aplicao (assim que o procedimento no continua a ser armazenado na base de dados).

Cordas vazias
Em Oracle, se voc tenta introduzir a corda vazia em uma coluna da corda de carter do variar-varying-length (ou para tentar actualizar tal coluna com a corda vazia), a base de dados armazena o ZERO preferivelmente. Para a informao de fundo, ler a seo anula, cordas vazias, e espaos na pgina 115.

Nveis da isolao
Oracle no suporta nveis da isolao do ajuste se uma aplicao usa (um pouco do que a esttica) o SQL dinmico. Porque todas as aplicaes de SQLWindows usam indicaes de SQL dinmicas, voc no pode chamar SqlSetIsolationLevel em sua aplicao de SQLWindows quando conectado a Oracle. Voc no pode ajustar nveis da isolao quando conectado a Oracle uma base de dados. Entretanto, voc pode afetar a consistncia de dados e o acesso simultneo aos dados fazendo qualquer um do seguinte:
4Connecting Gupta Objects to Databases

Travar a tabela inteira com a indicao da TABELA do FECHAMENTO. Travar determinadas fileiras com o SELETO... PARA a indicao da ACTUALIZAO.

Connecting Gupta Objects to Databases

5-

Chapter 4 Connecting to Oracle


Travar o intervalo de parada

Travar uma tabela inteira muito desajeitado e arriscado. Ningum diferentes do usurio que tem fechado a tabela podem fazer todas as operaes na tabela at que estejam destravadas. Mesmo se a aplicao trava a tabela por somente um curto perodo de tempo, a penalidade paga por outros usurios geralmente inaceitvel elevada. Travar somente determinadas fileiras durante uma transao muito mais seletivo e permite que outros usurios alcancem todos os dados na base de dados exceo das fileiras fechados. Entretanto, se o usurio que tem o fechamento toma um tempo longo terminar a transao, todos usurios restantes que precisam de alcanar esses dados so forados a esperar. Para algum fundo em nveis da isolao, ler nveis da isolao na pgina 1-12.

Travar o intervalo de parada


Os usurios de Oracle no suportam o intervalo de parada do fechamento. Entretanto, voc pode permitir o autocommit (ver Autocommit na pgina 4-2), que tem o efeito secundrio de eliminar paralizaes completas. Para algum fundo em intervalos de parada do fechamento, intervalo de parada do fechamento lido na pgina 1-14.

Trfego de mensagem de aperfeioamento


Para acelerar o fluxo dos dados entre uma aplicao de SQLWindows e o usurio de base de dados, voc pode usar a caracterstica do processamento de disposio. Esta caracterstica consiste: busca fileiras mltiplas de um jogo do resultado, um pouco do que uma fileira de cada vez.
Disposio buscar-voc

emite os dados para a ACTUALIZAO, INTRODUZ ou SUPRIME de operaes ao usurio nos grupos, um pouco do que a fileira pela fileira.
Volume executar-voc

Voc pode modificar como os trabalhos de processamento da disposio com a s p a l a v r a s - c h a v e s do fetchrow e do longbuffer no SQL.INI lima-filesee o f e t c h r o w na pgina 4-6 e o l o n g b u f f e r na pgina 4-8.

Actualizaes posicionadas
As aplicaes de SQLWindows podem executar actualizaes posicionadas de encontro a uma base de dados de Oracle.
4Connecting Gupta Objects to Databases

Para mais informao, ler actualizaes posicionadas na pgina 1-17.

Modalidade ajustada do resultado


Se voc gira sobre modalidade ajustada do resultado quando sua aplicao est conectada a Oracle, o resultado front-end ajustar-setsOracle dos usos de SQLWindows no suporta cursores scrollable (backend).

Connecting Gupta Objects to Databases

5-

Para mais informao, ler modalidade ajustada do resultado na pgina 1-18 e o resultado da parte frontal ajusta-se na pgina 1-8.

Palavras-chaves de SQL.INI
Esta seo descreve as palavras-chaves que voc deve se usar na lima de SQL.INI ao conectar uma aplicao de SQLWindows a uma base de dados de Oracle. Para mais informao sobre a lima de SQL.INI, ler aplicaes de inicializao de SQLWindows na pgina 2-5.

comdll
Identificar o SQLRouters disponvel entre SQLWindows (ou uma aplicao de cliente criada com o SQLWindows) e a base de dados. Secionar [win32client.dll] L_name do ion_dl do l=communicat do comdl da sintaxe A descrio esta palavra-chave identifica o nome de arquivo de um DLL de SQLRouter. Voc pode pr mais de um comdl l indicao na lima de SQL.INI. O valor do communication_dll_name a usar-se para SQLRouter/Oracle sqlora32. Exemplo
comdll=sqlora32

As notas para informao relacionada, lidas conectam a ordem da busca na pgina 1-6.

fileira do esforo
Esta palavra-chave especific o nmero de fileiras mximo SQLRouter/Oracle recupera por cada mensagem de rede durante operaes do cursor (busca) em um jogo do resultado. Seo [oragtwy] Defeito 20 Chrow=number_of_rows da sintaxe f e t Os number_of_rows da descrio devem ser um inteiro positivo (mas no pr a mais o sinal). O usurio usa uma disposio para prender os valores buscados da coluna. SQLRouter/Oracle recupera fileiras para cada esforo da rede pedido, de acordo com o seguinte algoritmo: 1. Tomar a largura da coluna a mais larga e dividi-la no tamanho mximo do amortecedor da disposio.
4Connecting Gupta Objects to Databases

SQL.INI keywords

2. Se o valor calculado menor do que o valor


usar o valor calculado.

do fetchrow,

Connecting Gupta Objects to Databases

5-

Example

Chapter 4 Connecting to Oracle

tion

3. Se no, usar o valor do fetchrow.Se nenhum valor definido, usar o valor de defeito de 20. O valor atribudo ao fetchrow no usado se: Voc usa PARA a clusula da ACTUALIZAO em uma indicao SELETA (CORRENTE DE
cursor).

tax Description

Voc especific uma coluna LONGA na lista SELETA. Voc pode melhorar o desempenho atribuindo um valor apropriado ao fetchrow. Para conseguir o bom desempenho, voc deve balanar o nmero de fileiras por o esforo (que aumenta a memria usada) de encontro necessidade do sistema de explorao para a memria (que faz com que o sistema de explorao troque a memria quando no bastante est disponvel). Sua aplicao de SQLWindows ainda recebe uma nica fileira para cada chamada a S q l F e t c h N e x t , no obstante o valor atribudo ao fetchrow. Este exemplo indica que voc quer recuperar somente 10 fileiras com cada esforo. fetchrow=10 Este exemplo indica que voc quer buscar somente uma nica fileira (de fato, incapacitando a caracterstica). fetchrow=1

Usar esta palavra-chave para definir o registro de atividade do router da base de dados e para permitir o registo. [win32client. ora32] ified_path_name ly_qual log=ful Especific todo o pathname vlido da lima aps a palavra-chave. Se a lima no existe, est criada. Se a lima j existe, overwritten (a menos que a opo de /Fa especific - vem abaixo). Uma vez que a indicao do registro foi adicionada lima de SQL.INI, registrar est executado automaticamente. Voc pode especific umas ou vrias das opes alistadas abaixo aps inteiramente - o pathname qualificado para personalizar a sada: /Bx - excluir valores variveis do ligamento /F um-aappend a lima existente /FD - dados do esforo da exposio /Ld - dados LONGOS da exposio lidos ou redigidos
4Connecting Gupta Objects to Databases

SQL.INI keywords

/Tx - excluir timestamps

Connecting Gupta Objects to Databases

5-

Chapter 4 Connecting to Oracle

Incorporar as opes exatamente como mostrado, mantendo letras de caixa as letras caixas e lower-case lower-case. Exemplo Este exemplo chama para uma lima de registro que no inclua timestamps em entradas (para conservar o espao de disco), e exposies a entrada e a sada de todos os dados LONGOS (artigos de dados including de TEXTO e de IMAGEM).
[win32client. ora32] log= c:\gupta\oracle.log /Tx /Ld

amortecedor longo
Esta palavra-chave especific o nmero de bytes mximo do tipo de dados longo colunas para recuperar ou emitir, e trunca bytes adicionais.
[oragt wy]

Sections

Default 32.768. Ajustar um valor menos do que o defeito far com que o valor seja restaurado ao defeito.
fer=number_of_bytes do longbuf

O Description Syntaxtamanho mximo desta palavra-chave limitado somente por confinamentes do sistema de explorao. Reduzir o valor desta palavra-chave para conservar a memria ou reduzir o trfego de rede. Se voc usa fe r do longbuf para limitar o nmero de bytes para recuperar, os dados recuperados esto truncados. Para evitar truncar dados longos, ajustar o valor igual ao tipo o maior tamanho dos dados que suas aplicaes precisam de ler.
A palavra-chave do fe r do longbuf aplica-se a todas as bases de dados definidas na seo [oragtwy]. Voc no pode especific um valor do longbu f f e r maior do que o tamanho mximo para que o tipo de dados seja recuperado. O

valor mximo para este ajuste dependente de seu ambiente de usurio do sistema de explorao e da base de dados..
longbuffer=65536

Example

N o t a : Voc pode igualmente ajustar esta varivel de ambiente em sua aplicao de

SQLWindows using o

S q l S e t P a r a m e t e r A l l com o parmetro de DBP_LONGBUFFER. (Referir a r e f e r n c i a d e f u n o d o S Q L W i n d o w s e a ajuda em linha para mais informao sobre esta

funo e o parmetro.)

nodefparse
Usar esta palavra-chave para permitir ou incapacitar a Defeito das sees anlise gramatical adiada. [oragt wy] no
fparse= do n {sim| no}
4Connecting Gupta Objects to Databases

SQL.INI keywords

Descrio

Esta palavra-chave (um formulrio encurtado do "nenhum adiado analisa gramaticalmente ") permite ou incapacita a anlise gramatical adiada. SQLRouter/Oracle usa a anlise gramatical adiada para o desempenho melhorado no tempo de execuo. Entretanto, a anlise gramatical adiada faz a eliminao de erros de mais difcil porque o router no pode retornar a posio de uma coluna que possa ter gerado um erro. Voc deve especialmente incapacitar a anlise gramatical adiada ao eliminar erros de indicaes de SQL complexas com muitas colunas no jogo do resultado. Se a anlise gramatical adiada deficiente e um erro est levantado, o cursor destaca automaticamente a coluna de ofensa no jogo do resultado. Quando voc pr uma aplicao na produo, voc deve permitir a anlise gramatical

adiada. O exemplo este exemplo incapacita a anlise gramatical adiada.


nodefparse=yes

r e m o te db n a m e
Usar esta palavra-chave para especific nomes de base de dados e seus associados conectam cordas. Seo [oragt wy] =db_name remoto do dbname da sintaxe , connect_string O db_name da descrio especific o valor que voc se usar como SqlDatabase para SqlConnect () connect_string o carter "@" seguido por Oracle do "nome servio" como compreendido por SQL*Net. Usar somente a primeira parcela do nome do servio no a parcela de ".world". Exemplo que este exemplo supor que voc configurou seu cliente de Oracle 7 ou de Oracle 8 para um nome do servio de Oracle de ARTHUR. mundo.
Remotedbname=ART, @ARTHUR

Voc atribui o SQLDatabase varivel ao valor "ARTE" e emite ento a chamada de SqlConnect (). SqlRouter Oracle encontra toda a informao necessria da conexo e conecta-o ao usurio de Oracle. Exigncias adicionais: SqlRouter/Oracle depende em cima da chamada Inteface de Oracle (OCI). Isto deixa SQLRouter/Oracle comunicar-se eficazmente com as verses 7.1, 7.2, 7.3, o 8.0.x, o 9.x, e as verses futuras de Oracle. Para certificar-se do verson apropriado do software de "OCI" de Oracle usada, a chave do registro
HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE
Connecting Gupta Objects to Databases

5-

Chapter 4 Connecting to Oracle

contem um valor para o parmetro ORAOCI. Isto pode ser ajustado a um verson especfico do DLL de Oracle:
Oracle 8.1. X Oracle 9.2.0.1

ORACLIENT8.DLL ORACLIENT9.DLL

Certificar-se do inteiramente - o nome de trajeto qualificado usado na entrada do registro. Referir a documentao de Oracle para mais informao sobre CONFIG. ORA, TNSNAMES. ORA, e ORACLE. INI e como set up estas limas. As verses de 8.1.5 de Oracle no so suportadas mais cedo por SqlRouter/Oracle.
Nota: As notas

para informao relacionada, lidas

conectam a ordem da busca

na pgina

1-6.

substituto
Usar esta palavra-chave para especific que a corda no primeiro parmetro deve substituir a corda no segundo parmetro sempre que o primeiro parmetro aparece em uma indicao de SQL.
S e c i o n a r [oragtwy] S u b s t i t u t e = o r i g i n a l _ s t r i n g da sintaxe, substitute_string Descrio

voc pode ter um nmero ilimitado de indicaes substitute na lima da iniciao. Entretanto, esta indicao muda todas as ocorrncias da palavra substituda em suas indicaes de SQL: operadores, ONDE clusulas, nomes de objeto, e literals (mas no variveis do ligamento). A segunda corda pode incluir a primeira, como em: substitute=od, impar
I m p o r t a n t e : As cordas podem incluir espaos em branco encaixados, mas no vrgula-voc

deve usar uma vrgula para separar o r i g i n a l _ s t r i n g

de substitute_string.

4-

Connecting Gupta Objects to Databases

SQL.INI keywords

Notas

Porque cada indicao de SQL analisada gramaticalmente, ter indicaes substitute em sua lima de SQL.INI adiciona uma pequena quantidade de despesas gerais compilao daquelas indicaes. Se voc no est funcionando nenhum software de Gupta que exige a substituio, voc pode querer remover estas indicaes da lima. Se voc usa as aplicaes que confiam nos comandos do "CATLOGO", tais como a procura, relatar o construtor, e o explorador do DB, voc deve incluir a seguinte indicao em seu SQL.INI:

Connecting Gupta Objects to Databases

5-

Example

Chapter 4 Connecting to Oracle

t i o n S y n t a x D e s c r i p t i oIncluir n

uselob

substitute=SYSSQL., esta indicao exatamente como mostrado com as letras de caixa" SYSSQL" seguidas em um perodo seguido por uma vrgula. Sem este, a procura, relata o construtor, e ou o explorador do DB no poder usar os comandos do "CATLOGO" em sua aplicao. Este exemplo substitui as citaes dobro, que Oracle no aceita, com anula. Esta indicao til funcionar um programa ou utiliz-lo ferramentas no pode modificar aquela executa no ambiente runtime de Gupta, e em determinados contextos, citaes dobro dos lugares em torno dos nomes que emite base de dados. As causas SQLRouter/Oracle da indicao para descascar as citaes dobro antes dele emitem os dados base de dados.
substitute=",

Usar esta palavra-chave para especific se o SQLBase API deve usar Oracle chama a verso (OCI) 8 da relao para trabalhar com datatypes do GROSSEIRO (GRANDE OBJETO BINRIO e OBJETO do CARTER GRANDE), ou usa a verso 7, que no pode segurar datatypes do GROSSEIRO.. 0
[oragtwy] uselob=integer

Os datatypes do GROSSEIRO na verso 9 de Oracle e maior exigem o uso da verso 8. de OCI. As verses anteriores do router de Gupta para Oracle usaram a verso 7. de OCI. Se voc precisa a compatibilidade com datatypes do GROSSEIRO de Oracle, ajustar o valor d o i n t e i r o a 1 para usar OCI 8. se no, ajustam o valor a 0 para usar OCI 7.. O defeito 0.
N o t a : Voc pode igualmente ajustar esta varivel de ambiente em sua aplicao de SQLWindows

using o

S q l S e t P a r a m e t e r A l l com o parmetro de DBP_ORAUSELOB. (Referir a r e f e r n c i a d e f u n o d o S Q L W i n d o w s e a ajuda em linha para mais informao sobre esta funo e o

parmetro.)

4-

Connecting Gupta Objects to Databases

Procedimentos armazenados
As aplicaes de SQLWindows podem executar procedimentos armazenados de PL/SQL em uma base de dados de Oracle. Estes procedimentos armazenados podem igualmente gerar eventos do disparador. Para executar um procedimento armazenado do PL/SQL, usar a funo de SqlPLSQLCommand. Um procedimento armazenado de PL/SQL invocado por SqlPLSQLCommand pode ter no mais de 254 argumentos. Tambm, a corda usada para invocar o procedimento no pode conter a nova linha carteres, nem pode executar funes autnomas. Entretanto, os argumentos da disposio podem ser dinmicos pr-arrayssee a sustentao dinmica da disposio para procedimentos armazenados de PL/SQL na pgina 4-15. O SqlPLSQLCommand no pode processar procedimentos armazenados sem argumentos. Para executar um procedimento armazenado sem argumentos, usar SqlPrepareAndExecute. Por exemplo:
Se no SqlPrepareAndExecute (hSql, " I M P L O R A R em anonymous_PL/S EXTREMIDADE; ")

QL_block;

SqlPLSQLCommand suporta somente os seguintes tipos de dados de Oracle para argumentos do scalar e da disposio para procedimentos armazenados: NMERO DATA CARVO ANIMAL VARCHAR VARCHAR2 Voc deve explicitamente especific o tamanho do CARVO ANIMAL, tipos de dados VARCHAR, ou VARCHAR2 como argumentos a um procedimento armazenado de PL/SQL. Voc pode usar %type ou definir seu prprio tipo de dados. Por exemplo, se o procedimento armazenado toma um argumento do CARVO ANIMAL que seja um valor para uma coluna em uma tabela, uso %type com table_name.column_name declarar essa varivel. Se o argumento no amarra dentro com uma coluna da base de dados, voc pode definir o CARVO ANIMAL de MYCHAR (20), a seguir usa %type com MYCHAR para declarar seu argumento. Se voc no especific o tamanho, SQLNetwork liga os argumentos com o tamanho mximo permitido tipos de cada dados.

Sobrecarregando procedimentos armazenados


SQLRouter/Oracle suporta procedimentos armazenados sobrecarregados em pacotes de PL/SQL; entretanto, voc deve: Definir procedimentos com maior nmero de argumentos antes dos
4Connecting Gupta Objects to Databases

Chapter 4 Connecting to Oracle

procedimentos com poucos argumentos.

4-

Connecting Gupta Objects to Databases

Description Return Value


Procedimentos armazenados

Usar todo o mesmo datilografa dentro toda a posio do argumento DENTRO, tipos PARA FORA, ou de IN/OUT. Usar todo o scalar ou a disposio datilografa dentro toda a posio do argumento.
I m p o r t a n t e : Voc no pode misturar tipos de dados, nem pode voc usar a DATA

datilografa dentro argumentos para procedimentos sobrecarregados.

Para a informao geral sobre procedimentos armazenados, ler procedimentos armazenados na pgina 1-21.

SqlPLSQLCommand
Usar Syntax Parameters esta funo para executar procedimentos armazenados de PL/SQL em sua aplicao de SQLWindows. Cham-la uma vez para cada invocao de PL/SQL. bOk
= S q l P L S Q L C o m m a n d ( hSql,

strCommand)

o hSqlHandle-The conectou o punho do SQL a uma base de dados de Oracle. Corda do strCommand-strCommandCommand usada para invocar um procedimento de PL/SQL. O primeiro parmetro identifica o punho do SQL base de dados. O segundo parmetro uma corda de comando usada para invocar um procedimento armazenado de PL/SQL. Como uma chamada de procedimento armazenado, esta corda de comando deve ter um nome. Voc pode usar PL/SQL nas variveis a mesma maneira que voc usa todo o outro parmetro em ligaes de controle do SAL. PL/SQL variveis PARA FORA ou de IN/OUT deve ser SAL vlido recebe parmetros. Estes parmetros, como o SAL recebem parmetros, so ajustados quando a chamada retorna. Voc pode usar disposies para DENTRO, parmetros PARA FORA, e de IN/OUT. Os parmetros de IN/OUT podem ser feitos para passar dados ao procedimento armazenado de PL/SQL e para receber dados de um procedimento armazenado de PL/SQL no mesmo parmetro. o bOk VERDADEIRO se a funo sucede e FALSO se falha. Procedimento armazenado do exemplo PL/SQL O seguinte exemplo mostra um procedimento armazenado FACTURA nomeada que contenha um procedimento, INSERT_INVOICES de PL/SQL. Este procedimento introduz um registro mestre e um jogo de registros de detalhe na base de dados.
CRIAR ou SUBSTITUIR facturas do PACOTE COMO O TIPO item_no_tbl TABELA de invoice_detail.item_no%TYPE NDICE POR BINARY_INTEGER;
Connecting Gupta Objects to Databases

5-

Chapter 4 Connecting to Oracle

O TIPO quantity_tbl TABELA de invoice_detail.quantity%TYPE NDICE POR BINARY_INTEGER; O TIPO amount_tbl TABELA de invoice_detail.amount%TYPE NDICE POR BINARY_INTEGER;

4-

Connecting Gupta Objects to Databases

Insert_invoice do PROCEDIMENTO (do o_invoice_id invoice_master PARA FORA. invoice_id %TYPE, i_client_name em invoice_master.client_name %TYPE, i_invoice_date no invoice_master. invoice_date %TYPE, i_item_no no item_no_tbl, i_quantity no quantity_tbl, i_amount no amount_tbl, i_num_details NO NMERO); FACTURAS DA EXTREMIDADE; CRIAR ou SUBSTITUIR facturas do CORPO do PACOTE COMO NMERO do next_invoice_id; Insert_invoice do PROCEDIMENTO (do o_invoice_id invoice_master PARA FORA. invoice_id %TYPE, i_client_name no invoice_master. client_name %TYPE, i_invoice_date no invoice_master. invoice_date %TYPE, i_item_no no item_no_tbl, i_quantity no quantity_tbl, i_amount no amount_tbl, os i_num_details NO NMERO) SO COMEAR SELECIONAR INVOICE_SEQ .NEXTVAL no next_invoice_id DE DUPLO; o_invoice_id: =next_invoice_id; INSERO EM INVOICE_MASTER (INVOICE_ID, CLIENT_NAME, INVOICE_DATE) VALORES (next_invoice_id, i_client_name, i_invoice_date); PARA n em 1. LAOS de .i_num_details INSERO EM INVOICE_DETAIL (INVOICE_ID, ITEM_NO, QUANTIDADE, QUANTIDADE) VALORES (next_invoice_id, i_item_no (n), i_quantity (n), i_amount (n)); LAO DA EXTREMIDADE; COMETER; TERMINAR o insert_invoice; TERMINAR facturas; Executando o procedimento armazenado da amostra

O seguinte exemplo mostra como executar o procedimento armazenado do exemplo PL/SQL de uma aplicao de SQLWindows.
Nmero: corda do ninv_id: corda strClient: data do strCommand: nmero do dt_inv_dt: nmero do nitem_No [3]: [3] nmeros nQnty: nmero do nAmt [3]: nNum

Connecting Gupta Objects to Databases

5-

Chapter 4 Connecting to Oracle


Procedimentos armazenados

Jogo ninv_id = 3 Jogo strClient =' cora de John' Jogo strComman =' FACTURAS. INSERT_INVOICE' strComman = strCommand | | ' (ninv_id, strClient, Jogo d strComman dt_inv_dt,' | | ' nitem_No, nQnty, nAmt, nNum)' Jogo d = strCommand Jogo d dt_inv_dt = 1993-07-12 Jogo nitem_No [0] = 3 Jogo nitem_No [1] = 4 Jogo nitem_No [2] = 5 Jogo nQnty [0] 13 Jogo nQnty [1] 14 nQnty [2] 15 Jogo = Jogo = nAmt [0] = 21 Jogo nAmt [1] = 22 Jogo nAmt [2] = 23 Jogo nNum = 3 AJUSTAR o bOK=SqlPLSQLCommand (hSql, o strCommand)

Sustentao dinmica da disposio para procedimentos armazenados de PL/SQL


Voc pode usar disposies dinmicas como a entrada, a sada, e os argumentos do entrada/sada aos procedimentos armazenados de Oracle8 PL/SQL. As disposies podem ser do tipo NMERO, CORDA e DATE/TIME.

Disposies dinmicas como argumentos da ENTRADA


As disposies dinmicas vm o tamanho do valor de ndice o maior usado em uma indicao de atribuio using as variveis de disposio dinmicas. Por exemplo, as seguintes indicaes causam nDynVar ser uma disposio dinmica de 10 elementos:
[0] = 0 [1] = 1 [9] = 9 nDynVar nDynVar nDynVar

Quando voc passa uma disposio dinmica como um argumento da ENTRADA a um procedimento armazenado de PL/SQL using S q l P L S Q L C o m m a n d , o nmero de elementos criados no cliente est disponvel no usurio de base de dados. Por exemplo, o procedimento armazenado:
introduzir no foo os valores (nDynVar [9])

introduz o valor 9 na tabela, visto que a indicao:


insero nos valores do foo (nDynVar [10])

causa o erro "que tenta buscar alm da extremidade do jogo do resultado".

4-

Connecting Gupta Objects to Databases

Valores Uninitialized
No inicializar disposies dinmicas. As disposies so passadas como o ZERO para tipos de dados CORDA e DATE/TIME, e como zero para o tipo de dados NMERO. Para passar - o nmero como um ZERO, o usurio deve explicitamente atribuir-lhe o valor Number_Null.

Disposies dinmicas como argumentos da SADA


O tamanho de argumentos da sada do tipo disposio dinmica determinado no procedimento armazenado backend. Por exemplo, as seguintes indicaes retornam uma disposio de dez elementos a sua aplicao de SQLWindows:
sOutVar (1): = ABC do `'; sOutVar (10): = def do `';

Valores Uninitialized
Os valores para argumentos da sada no so inicializados na parte posterior, mas so retornados como valores NULOS.

Disposies dinmicas como argumentos do ENTRADA/SADA


As disposies dinmicas do ENTRADA/SADA comportam-se como disposies dinmicas da ENTRADA na entrada e como disposies dinmicas da SADA na SADA.

Transaes, disconexes, e sadas


Se o autocommit est fora em sua aplicao, voc responsvel para explicitamente cometer ou rolar transaes traseiras. O descanso desta seo supor que o autocommit est. Se voc desconecta da base de dados sem cometer ou rolar para trs uma transao pendente, a base de dados comete a transao para voc. Se voc retira a aplicao normalmente sem cometer ou rolar para trs uma transao pendente, a base de dados comete a transao para voc. Se voc retira a aplicao anormalmente sem cometer ou rolar para trs uma transao pendente, a base de dados rola para trs a transao para voc.

Redigindo dados CRUS


Para INTRODUZIR ou ACTUALIZAR as colunas que contm dados CRUS, voc deve primeiramente atribuir os dados a ser coloc nessa coluna a uma varivel apropriada do ligamento, a seguir prepara uma INSERO ou ACTUALIZA a indicao using essa varivel do ligamento. A varivel do ligamento deve ser do tipo CORDA LONGA. Uma vez que voc
Connecting Gupta Objects to Databases

5-

Chapter 4 Connecting to Oracle

preparou a INSERO ou ACTUALIZA a indicao, voc deve chamar S q l S e t L o n g B i n d D a t a t y p e para ligar

4-

Connecting Gupta Objects to Databases

R ed i g i n d o d a d o s C RU S

Dados LONGOS da CORDA ao tipo de dados CRUS. Voc ento executa a INSERO ou ACTUALIZA a indicao.
I m p o r t a n t e : Voc deve preparar a indicao da INSERO ou da ACTUALIZAO sem

execut-la, a seguir para chamar SqlSetLongBindDatatype, a seguir executa a INSERO ou ACTUALIZA a indicao. O emperramento feito por SqlSetLongBindDatatype dura somente at que sua aplicao prepare a indicao de SQL seguinte.

A chamada a S q l S e t L o n g B i n d D a t a t y p e toma dois argumentos: o primeiro a posio ordinal da varivel do ligamento que tem os dados LONGOS da CORDA na indicao da INSERO ou da ACTUALIZAO; o segundo os 23 que constantes esta constante denota dados CRUS no caso das bases de dados de Oracle. (Voc pode declarar um usurio constante com um nome simblico como n R a w e lhe atribui o valor 23; isto faz seu cdigo mais self-documenting.) Por exemplo, supr uma tabela de Oracle chamada PRODUTO com os seguintes tipos de dados da coluna: INTEIRO - para a informao da identificao do estilo VARCHAR (30) - para a informao do estilo VARCHAR (254) - para a informao da descrio DEMICAL (8.2) - para a informao de preo POR MUITO TEMPO Cru-RAWfor a informao do retrato
N o t a : O exemplo trabalharia apenas o mesmos se o datatype da ltima coluna era

GRANDE OBJETO do CARTER ou GRANDE OBJETO BINRIO em vez de CRU LONGO.

Igualmente supr as seguintes declaraes variveis em sua aplicao:


Nmero: corda do nStyleId: corda do strStyle: strDesc Numnber: nPrice Corda longa: lstrPicture

Supr agora que voc atribuiu estes valores de variveis em seu programa. Voc pode adicionar uma fileira tabela do PRODUTO como segue:
INSERO do EM Jogo strStmnt=' Jogo strStmnt=strStmn || t strStmnt=strStmn || Jogo t VALORES DO PRODUTO' `(: nStyleId,: strStyle,: strDesc,' lstrPicture)' `: nPrice,:

Cha SqlPrepare (hOracle, strStmnt) Cha SqlSetLongBindDatatype (5, 23) mad

Chamada SqlExecute (hOracle)

O primeiro argumento a S q lS e tL o n g B in d D a ta ty pe 5 porque: o icture do lst rP a varivel do ligamento que tem os dados a ser introduzidos na coluna CRUA LONGA, e aparece enquanto a quinta varivel do ligamento na indicao da INSERO. O segundo argumento deve ser 23 (ou uma constante de inteiro simblica voc se define que tem esse valor).

Pesquisa de defeitos no linux


Ao usar o router nativo de Oracle em plataformas do linux, voc pode encontrar a mensagem de erro "no pode carregar nenhuma comunicao DLLs, rede no pode ser instalada". Este erro pode ser causado por uns ou vrios problemas da configurao. Certific deas seguintes circunstncias estejam verdadeiras: O comando "ldd" de Runing de encontro a "libsqlora32.so" confirma que todas as dependncias esto atuais. A base de dados a que voc deseja conectar nomeada p o r u m a i n d i c a o do remotedbname em sua lima de configurao (defeito sql.ini), como neste exemplo:
remotedbname=ora10, @tns: ORCL

... onde ORCL deve ser definido na lima de configurao do cliente de tsnames.ora, como neste exemplo:
ORCL = (DESCRIO = (ADDRESS_LIST = (ENDEREO = (PROTOCOLO = TCP) (ANFITRIO = 192.168.0.1) (PORTO = 1527)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL.MYHOME)) )

Sob o dobrador do tdx/sustentao/dotwine (para as instalaes non-root, .tdx/dotwine da sustentao), verific para ver se h as seguintes entradas abaixo [DllOverrides] n a l i m a dos config: "sqlwntm" = "builtin, nativo" "orasal32" = "builtin, nativo" Sob o dobrador de ../tdx/etc/ h uma entrada para DllPath na varivel da seo [do vinho] em tdx.conf, como segue:
DllPath=$ {CX_ROOT} /lib/wine: <targetdirectory>

... onde o <targetdirectory> o diretrio que contem executables do colaborador da

Connecting Gupta Objects to Databases

5-

equipe.

Chapter 5

Connecting to Sybase
Este captulo descreve como conectar aplicaes de SQLWindows a Sybase. Para as verses especficas de Sybase suportadas, referir por favor as notas de liberao.

Antes de voc comear


Ler por favor todo o captulo 1, vista geral e captulo 2, inicializando e testando sua conexo antes de ler este captulo. Voc conecta as aplicaes a um usurio de Sybase using o router nativo de Gupta, SQLRouter/Sybase de SQLWindows.

Autocommit e transaes acorrentadas


Sybase suporta o autocommit. Para girar o autocommit de ligar/desligar, ajustar a p a l a v r a - c h a v e do sybautocommit na lima de SQL.INI ao apropriado valor-valuesee o s y b a u t o c o m m i t na pgina 5-23.

Chapter 5

Connecting to Sybase

Se voc gira o autocommit sobre, o usurio de base de dados comete automaticamente resultados de cada indicao de SQL que executa com sucesso; o usurio igualmente incapacita transaes acorrentadas. Se voc incapacita o autocommit, voc deve explicitamente COMETER (ou ROLLBACK) todas as mudanas base de dados. Porque o autocommit de desabilitao igualmente permite transaes acorrentadas, voc no precisa de coloc COMEA A TRANSAO na frente das indicaes que compo a transactionjustapenas pr uma CONSIGNAO (ou o ROLLBACK) na extremidade desse grupo de indicaes.
N o t a : revelia, as indicaes de DDL (lngua de definio de dados), como CRIAM A

TABELA, so invlidas dentro de uma transao. Entretanto, seu administrador de base de dados de Sybase pode configurar a base de dados para permitir indicaes de algum DDL como parte de uma transao.

Mesmo se voc permite o autocommit, voc pode ainda preceder uma seqncia especfica de indicaes de SQL com a indicao da TRANSAO do COMEO e segui-las com uma indicao da CONSIGNAO (ou o ROLLBACK). As indicaes in-between COMEAM A TRANSAO e COMETEM-NA no esto cometidas at que a CONSIGNAO esteja executada e estiverem roladas para trs se o ROLLBACK est executado. As indicaes de suporte permitem desta maneira que voc suprima o autocommit para aquelas indicaes.
I m p o r t a n t e : Usar a p a l a v r a - c h a v e do sybautocommit para permitir ou

incapacitar o autocommit; no usar a indicao Transacionar-Transact-SQL AJUSTADA.

Para a informao de fundo no autocommit, ler Autocommit na pgina 1-3.


5Connecting Gupta Objects to Databases

Ligar variveis

Ligar variveis
O sistema 1 1.x de Sybase e umas verses mais atrasadas fornecem a sustentao nativa para comandos pre-compiled, e daqui, variveis do ligamento da entrada. Para a informao geral sobre variveis do ligamento, ler v a ri ve is do ligamento com Sybase. Por exemplo, a seguinte indicao de SQL falha porque voc no pode usar uma varivel do ligamento para especific um nome da tabela:
Chamada SqlPrepare (hSql, INSERO DO `EM: chamada SqlExecute dos VALORES do dfTabName (1)' ) ( h S q l )
N o t a : Se voc tem as aplicaes existentes que trabalharam com uma base de dados de d o lig a me n to

na pgina 1 - 5 . H determinadas limitaes em como voc pode usar variveis

Sybase antes do sistema 11 .x, voc pode ter o cdigo como isto que voc ter que mudar.

SQLRouter/Sybase executa a sustentao varivel do ligamento nativo da entrada da Cliente-Client-Library e do usurio do SQL sempre que possvel. Isto inclui SELETO INSERO ACTUALIZAO (exceto actualizaes posicionadas) SUPRESSO (exceto supresses posicionadas) Em todos casos restantes (procedimentos armazenados, DDL, e assim por diante), ligar a sustentao varivel simulado atravs da substituio de valores variveis do ligamento apenas antes da execuo. Ao contrrio das variveis nativas do ligamento, as variveis do ligamento da entrada so suportadas meramente como uma convenincia de programao, no como uma maneira de melhorar o desempenho. Por exemplo, se ns supor
a entrada do df

tem o valor 231, o cdigo:

Chamada SybPrepareProc (hSql,' sp_foo @var1 =: df entrado', `: dfInput') Chamada SqlExecute (hSql)

emite a seguinte indicao de SQL ao usurio de base de dados: sp_foo @var1 = 231
I m p o r t a n t e : Para a mobilidade mxima, evitar usar as variveis do ligamento que no

so ANSI-ANSI-compliant.
7-

Connecting Gupta Objects to Databases

Chapter 5

Connecting to Sybase

COMPUTAR a clusula
SQLRouter/Sybase no suporta a extenso Transacionar-Transact-SQL do CLCULO. Toda a pergunta que contem uma clusula do CLCULO retorna o erro #32028:
Clusula do CLCULO no suportada.

Tambm, alguns COMPUTAM resultados dos procedimentos armazenados podem conduzir a um ENDOF-FETCH prematuro.

Preservao do contexto do cursor


SQLRouter/Sybase suporta a preservao do cursor-cursor-context (CCP) com o FIM da opo da base de dados da Cliente-Client-Library NO transporte da EXTREMIDADE. Nas aplicaes de SQLWindows que conectam a Sybase, o CCP est revelia. Sybase considera todos os cursores pertencer mesma transao de base de dados. Quando o CCP permitido, todos os cursores mantm seus contextos. Do mesmo modo, quando o CCP deficiente, todos os cursores perdem seu contexto depois que uma CONSIGNAO ou um ROLLBACK so executados. Embora voc chame a funo SqlSetParameter (com o parmetro DBP_PRESERVE) para permitir ou incapacitar o CCP, e voc especific um punho particular do SQL como o primeiro parmetro nessa chamada, o espao do CCP no limitado a esse handlethe- o efeito global conexo e a todos os cursores associados com a transao que est sendo executada nessa conexo. (Ver igualmente enablemultipleconnections na pgina 5-18 para mais informao sobre os punhos e as conexes do SQL.) SqlSetParameter para permitir ou incapacitar o CCP; no executar o FIM AJUSTADO da indicao Transacionar-Transact-SQL NO transporte da EXTREMIDADE.
I m p o r t a n t e : Chamada

Se o CCP est ligada (e o autocommit est), voc pode continuar a executar indicaes de SQL preparadas (sem as preparar outra vez) mesmo depois que voc comete a transao que aquelas indicaes so uma parte de. Se o CCP est, entretanto, voc no pode executar aquelas indicaes de SQL uma vez que voc comete a transao sem as preparar outra vez. Para a informao de fundo geral sobre o CCP, ler a preservao do contexto do cursor na pgina 1-7.

5-

Connecting Gupta Objects to Databases

Tipos de dados

Tipos de dados
A tabela que segue mostras o trao entre os tipos de dados suportou por uma aplicao de SQLWindows e pelos tipos de dados suportou por um usurio de base de dados de Sybase.
Trao de tipos de dados a Sybase

Gupta SQLWindows
Tipo de dados

Tipo de dados de Sybase

CORDA

CARVO ANIMAL (1-254 bytes) VARCHAR (1-254 bytes) BINRIO (1-127 bytes) VARBINARY (1-127 bytes) TIMESTAMP CARVO ANIMAL (1-255 bytes) VARCHAR (1-255) IMAGEM (bytes 1 (de 231-1)) TEXTO (bytes 1 (de 231-1)) BINRIO (128-255 bytes) VARBINARY (128-255 bytes) BOCADO NUMRICO TINYINT SMALLINT INT FLUTUADOR DECIMAL PRECISO DOBRO REAL SMALLMONEY DINHEIRO SMALLDATETIME DATETIME

CORDA LONGA

NMERO

DATE/TIME

N o t a : Para redigir mais de 31.997 bytes da IMAGEM ou 64.000 bytes de dados do TEXTO, voc deve chamar a funo S y b W r i t e T e x t - S y b W r i t e T e x t s e e a e s c r i t a e a r e c u p e r a o d e d a d o s d a I M A G E M e d o T E X T O na pgina 5 - 3 7 .

Us i n g o ti p o de da d o s d o ti me sta mp
O TIMESTAMP um tipo de dados Sybase-Sybase-supplied mas definidos pelo utilizador que seja tratado porque o tipo de dados VARBINARY (8) para o
Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

armazenamento e a recuperao. Voc busca estes dados em uma varivel de CORDA, onde seja armazenada no formato hexadecimal.

5-

Connecting Gupta Objects to Databases

Voc no pode actualizar uma coluna do TIMESTAMP. Voc igualmente no pode introduzir uma fileira com uma coluna do TIMESTAMP onde voc especific seu prprio TIMESTAMP valor-valuespecify o ZERO para o TIMESTAMP, e a base de dados introduza o valor correto para voc. Por exemplo, supr que voc cria uma tabela como segue:
criar timestamp (c1 int, c2, c3 int) do T1 da tabela para introduzir uma fileira nova,

voc executam a indicao:


introduzir nos valores T1 (1, ZERO, 3)

Chapter 5

O usurio de base de dados armazena o inteiro 1 na coluna c1, o inteiro 3 na coluna c3, e o valor system-generated atual do timestamp no timestamp da coluna.

Cordas vazias

Connecting to Sybase

Em Sybase, se voc tenta introduzir a corda vazia em uma coluna da corda de carter do variar-varying-length (ou para tentar actualizar tal coluna com a corda vazia), a base de dados armazena um espao preferivelmente. Para a informao de fundo, ler a seo anula, cordas vazias, e espaos na pgina 115.

Processamento do erro
SQLRouter/Sybase deriva seus cdigo e texto de erro de uma de trs fontes possveis: o ERRO da lima d e S Q L W i n d o w s . S Q L , mensagens da ClienteClient-Library, ou mensagens da base de dados. SQLRouter/Sybase pode receber mensagens mltiplas; avalia todas as mensagens e tenta-as relatar o somente o um que o mais informativo. Em conseqncia, a primeira mensagem retornou por SybGetClientMsg ou SybGetServerMsg no combina necessariamente o cdigo e o texto de erro relatrios desse SQLRouter/Sybase aplicao. (Para mais informao em SybGetClientMsg e em SybGetServerMsg, ver a recuperao do erro e das mensagens da informao na pgina 5-8.) Um amortecedor de mensagem separado criado para cada conexo associada com uma aplicao, um nome de base de dados, e um nome de usurio dados. Todos os punhos do SQL na mesma conexo compartilham deste nico amortecedor de mensagem. O amortecedor de mensagem cancelado sempre que um comando de SQL novo emitido ao usurio de base de dados using um dos punhos do SQL associados com a conexo. O nmero de mensagens que podem ser conservadas limitado. Cada mensagem
5Connecting Gupta Objects to Databases

Chapter 5

Connecting to Sybase

conservada consome uma pequena quantidade de areo fixo, limitando o nmero total de mensagens conservadas a 5000. As tentativas de conservar mais de 5000 mensagens so ignoradas. Todo o texto de mensagem para todo o nico comando deve caber dentro de 64.000 bytes; se no, a economia das mensagens suspendida.

5-

Connecting Gupta Objects to Databases

Error processing

A frmula para consumo calculador da memria : nMemory = (nMaxMessages * (nMaxLength + 22)) * nConnections

Precedncia do erro
Com poucas excees (por exemplo, falha da conexo ou resultados pendente), as mensagens da Cliente-Client-Library indicam geralmente um problema com SQLRouter/Sybase ou Cliente-Client-Library prprio. Quando as fontes mltiplas so possveis para relatar uma condio de erro, a fonte est baseada na seguinte ordem de precedncia: Cdigo de erro runtime de SQLWindows (0-32.767) Mensagem de Sybase (0-65.536) Mensagem da Cliente-Client-Library (0-65.536) Toda a sobreposio das escalas do cdigo de erro. Para ajudar a mant-los separada, SQLRouter/Sybase relata o cdigo de erro aplicao using as seguintes escalas modificadas: Cdigo de erro runtime de SQLWindows (0 - 19.999) Mensagem de Sybase (20.000-29.999) Mensagem da Cliente-Client-Library (30.000-32.767) Maior de 32.767 erro sempre do retorno dos erros 32.100; o nmero de erro real aparece no incio do texto de mensagem.
N o t a : Voc pode sempre come o cdigo de erro real e o texto das mensagens da Cliente-

Client-Library (Sybase) chamando a mensagem de SQLRouter/Sybase API-APIread a seo q u e r e c u p e r a o e r r o e a s m e n s a g e n s d a i n f o r m a o na pgina 5 - 8 para mais informao.

RAISERROR
RAISERRORs erros definidos pelo utilizador adicionados tipicamente aos procedimentos armazenados. So considerados informativos e non-fatal. O router/Sybase de SQLBase retorna valores diferentes dependendo do valor especific na primeira indicao de RAISERROR que executada realmente no procedimento armazenado: Se o valor do primeiro RAISERROR menos de 17.000, a seguir a parte posterior de Sybase retorna um erro. Se o valor do primeiro RAISERROR exatamente 17, 000, a seguir SqlRouter/Sybase retornaro que valor mais alguns valores adicionais de
Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

RAISERROR (voc tem que chamar SybGetServerMsg () repetidamente para come todos os vlaues de RAISERROR, e o jogo do resultado (eventualmente) ser retornado.

5-

Connecting Gupta Objects to Databases

Error processing

Se o valor do primeiro RAISERROR maior de 17.000, a seguir SqlRouter/Sybase retornar que o valor e nenhuma valores subseqente de RAISERROR, mas no retornaro um jogo do resultado, regarless se um foi retornado realmente pela parte posterior de Sybase. Se voc planeia usar RAISERROR como uma "advertncia" ou como um indicaor para dirigir uma lgica mais adicional em seu programa, a seguir voc deve certificarse que seu procedimento armazenado tem sempre primeiramente um valor de 17.000, indicaes de ento do additonal um RAISERROR do uso para indicar coniditions diferentes. Seu programa pode verific para ver se h o primeiro erro para ser exatamente 17.000 e saberia ento para procurar valores adicionais de RAISERROR. Ao mesmo tempo, poderia recuperar o resultado ajustado da execuo do procedimento armazenado. O jogo do resultado no estar disponvel se a indicao de RAISERROR especific algum valor excepo de 17.000.

Recuperando o erro e as mensagens da informao


Para recuperar o erro de cliente e de usurio e as mensagens informativas, ou encontrar quantas mensagens l so, chamar uma da funo do SAL alistada abaixo. Estas funes so compreendidas por SQLRouter/Sybase.
I m p o r t a n t e : Para permitir a economia das mensagens, voc

deve incluir os sybmaxmessages de SQL.INI.

da palavra-chave

na lima

SybGetClientMsgCount
Usar esta funo para retornar o nmero de mensagens de cliente atualmente protegidas. bOk=SybGetClientMsgCount da sintaxe (hSql, nCount)
Punho do Sql: hSql Receber o nmero: nCount

Punho do hSql-A dos parmetros que identifica um contexto da conexo base de dados. nmero do nCount-The de mensagens de cliente protegidas. O bOk do retorno do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. A descrio esta funo retorna o nmero de mensagens de cliente protegidas atualmente no hSql do punho no nCount. As mensagens ocupam as posies 1 atravs do nCount no amortecedor. As notas para permitir a proteco das mensagens, incluem a palavra-chave das idades dos ss do sybmaxme na lima de SQL.INI.
Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

SybGetClientMsg
Usar esta funo para recuperar o nmero, o texto, e a severidade de uma mensagem de cliente arbitrria.

5-

Connecting Gupta Objects to Databases

Error processing

bOk=SybGetClientMsg da sintaxe (hSql, nPosition, nMsgNumber, strMsgText, nSeverity)


Punho do Sql:

nmero do hSql: o
recebe

nPositionnSeverity do
ostrMsgText do

nmero: RecebernMsgNumber

Punho do hSql-A dos parmetros que identifica um contexto da conexo base de dados. posio do nPosition-The da mensagem a ser recuperada no amortecedor de mensagem. o nmero do nMsgnumber-The associou com a mensagem recuperada. texto do strMsgtext-The da mensagem recuperada. severidade do nSeverity-The da mensagem recuperada. O bOk do retorno do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. A descrio esta funo retorna o nmero, o texto, e a severidade da mensagem de cliente em o nPosition de posio do amortecedor de mensagem. A funo falha se o amortecedor est vazio, a extremidade do amortecedor foi alcangada, ou voc fornece um valor invlido para o nPosition. As notas para permitir a proteco das mensagens, incluem a palavra-chave dos sybmaxmessages na lima de SQL.INI.

SybGetNextClientMsg
Usar esta funo para recuperar o nmero, o texto, e a severidade da mensagem de cliente seguinte. Punho do Sql do bOk=SybGetNextClientMsg da sintaxe (hSql, nMsgNumber, strMsgText, nSeverity): hSql
Receber o nmero: nMsgNumber Receber a corda: strMsgText Receber o nmero: nSeverity

Punho do hSql-A dos parmetros que identifica um contexto da conexo base de dados. o nmero do nMsgnumber-The associou com a mensagem recuperada. texto do strMsgtext-The da mensagem recuperada.
Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

severidade do nSeverity-The da mensagem recuperada. O bOk do retorno do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. A descrio esta funo retorna o nmero, o texto, e a severidade da mensagem de cliente seguinte no amortecedor de mensagem. A funo falha se o amortecedor est vazio ou a extremidade do amortecedor estve alcangada. As notas para permitir a proteco das mensagens, incluem a palavra-chave dos sbios do sybmaxme s na lima de SQL.INI.

SybGetServerMsgCount
Usar esta funo para retornar o nmero de mensagens atualmente protegidas do usurio. bOk=SybGetServerMsgCount da sintaxe (hSql, nCount)
Punho do Sql: hSql Nmero: nCount

Punho do hSql-A dos parmetros que identifica um contexto da conexo base de dados. nmero do nCount-The de mensagens protegidas do usurio. O bOk do retorno do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. A descrio esta funo retorna o nmero de mensagens do usurio protegidas atualmente no hSql do punho. As mensagens ocupam as posies 1 atravs do nCount no amortecedor. As notas para permitir a proteco das mensagens, incluem a palavra-chave dos sbios do sybmaxme s na lima de SQL.INI.

SybGetServerMsg
Usar esta funo para recuperar o nmero, o texto, e a severidade de uma mensagem arbitrria do usurio. bOk=SybGetServerMsg da sintaxe (hSql, nPosition, nMsgNumber, strMsgText, nSeverity)
Punho do Sql: hSql Nmero: nPosition Receber o nmero: nMsgNumber
5Connecting Gupta Objects to Databases

Error processing

Receber a corda: strMsgText Receber o nmero: nSeverity

Punho do hSql-A dos parmetros que identifica um contexto da conexo base de dados.

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

posio do nPosition-The da mensagem a ser recuperada no amortecedor de mensagem. o nmero do nMsgnumber-The associou com a mensagem recuperada. texto do strMsgtext-The da mensagem recuperada. severidade do nSeverity-The da mensagem recuperada. O bOk do retorno do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. A descrio esta funo retorna o nmero, o texto, e a severidade da mensagem do usurio em o nPosition de posio do amortecedor de mensagem. A funo falha se o amortecedor est vazio, a extremidade do amortecedor foi alcangada, ou voc fornece um valor invlido para o nPosition. As notas para permitir a proteco das mensagens, incluem a palavra-chave dos sybmaxmessages na lima de SQL.INI.

SybGetNextServerMsg
Usar esta funo para recuperar o nmero, o texto, e a severidade da mensagem seguinte do usurio. Sintaxe punho do Sql do bOk=SybGetNextServerMsg (hSql, nMsgNumber, strMsgText, nSeverity): hSql Receber o nmero: nMsgNumber Receber a corda: strMsgText Receber o nmero: nSeverity Parmetros punho do hSql-A que identifica um contexto da conexo base de dados. o nmero do nMsgnumber-The associou com a mensagem recuperada. texto do strMsgtext-The da mensagem recuperada. severidade do nSeverity-The da mensagem recuperada. Descrio do retorno do valor o bOk est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. Esta funo retorna o nmero, o texto, e a severidade da mensagem seguinte do usurio no amortecedor de mensagem. A funo falha se o amortecedor est vazio ou a extremidade do amortecedor estve alcangada. Para permitir a proteco das mensagens, incluir a
5Connecting Gupta Objects to Databases

Notas

Exemplos
Para recuperar todas as mensagens do DBCC (verificador da consistncia da base de dados) comandar, voc poderia codificar o seguinte: Chamar SqlPrepareAndExecute (hSql,' checkdb do dbcc')! Estabelecer a posio no amortecedor de mensagem. Se SybGetServerMsg (hSql, 1, nMsgno, strMsgtext, nSeverity) ! Atravessar as mensagens restantes. Lao Se no SybGetNextServerMsg (hSql, nMsgno, strMsgtext, nSeverity) Ruptura ... ...

Chapter 5

Connecting to Sybase

Desde que isto a primeira vez a aplicao atravessa o amortecedor de mensagem para este comando, o seguinte exemplo funcional equivalente: Chamada SqlPrepareAndExecute (hSql,' checkdb do dbcc')! Atravessar todas as mensagens. Lao Se no SybGetNextServerMsg (hSql, nMsgno, strMsgText, nSeverity) Ruptura ...
I m p o r t a n t e : Todas as mensagens pertencem conexo. Os punhos individuais do SQL dentro

da mesma conexo alcanam um nico amortecedor de mensagem e herdam seu posicionamento atual do posicionamento estabelecido pelos punhos prvios do SQL.

Come conexes mltiplas


Quando voc obtem os punhos mltiplos do SQL chamando S q lCo n n e c t mais de uma vez, voc pode escolher ter todos os punhos do SQL que so associados com o mesmo usurio - o nome da identificao, da senha e de base de dados compartilha da mesma conexo, ou voc pode escolher mandar cada punho do SQL come sua prpria conexo. Voc controla este comportamento com os enablemultipleconnections que a palavra-chave no SQL.INI lima-fileread e n a b l e m u l t i p l e c o n n e c t i o n s na pgina 5 - 1 8 .

5-

Connecting Gupta Objects to Databases

Chapter 5

Connecting to Sybase Punhos e conexes

Punhos e conexes
SQLRouter/Sybase permite que sua aplicao conecte a Sybase com as conexes mltiplas e um nico punho do SQL em cada conexo, ou com os punhos mltiplos do SQL em uma nica conexo. Este comportamento controlado por uma palavra-chave no SQL.INI lima-filesee os enablemultipleconnections da seo na pgina 5-18. SQLRouter/Sybase pode suportar no mais de 50 conexes por a aplicao. Cada conexo pode suportar no mais de 255 punhos do SQL. Nota: Porque cada conexo consome determinados recursos no cliente, o nmero real de
conexes e de punhos disponveis no tempo de execuo pode variar.

SQLRouter/Sybase aproveita-se de cursores nativos de Sybase para suportar tabelas provisrias, a indicao dos database_options do JOGO, e a mudana das senhas (com sp_password). Para mais informao de fundo, ler os punhos, os contextos, e as conexes na pgina 1-9.

Nveis da isolao
Sybase suporta nveis da isolao atravs da caracterstica do nvel da isolao da transao. O nvel 1 impede sujo l; O nvel 3 impede fileiras fantasmas. A sustentao para estes nveis varia de acordo com a verso de Sybase. Sybase 11.5: SQLRouter/Sybase suporta estes nveis da isolao traando o CS do nvel da isolao de SQLWindows ao nvel 1 e ao nvel RR da isolao ao nvel 3.. Sybase11.9.2 e mais tarde: O nvel 2 da isolao da transao fornecido explicitamente para tabelas fechados dos data-only-somente. Esta tabela sumaria o trao de nveis da isolao:
Trao nivelado da isolao

Gupta
SQLWindows

Sistema 11.5

Sistema 11.9.2

RO CS RL RR

Nvel 0 da isolao
Nvel 1 da isolao

Nvel 0 da isolao
Nvel 1 da isolao Nvel 2 da isolao Nvel 3 da isolao

Nvel 2 da isolao (No suportado)


Nvel 3 da isolao

Para a informao de fundo, ler nveis da isolao na pgina 1-12.


5Connecting Gupta Objects to Databases

Actualizaes posicionadas
A Cliente-Client-Library suporta actualizaes e supresses posicionadas atravs de sua sustentao nativa do cursor. Conseqentemente, SQLRouter/Sybase no suporta PARA CONSULTA clusula-clauseuse PARA a clusula da ACTUALIZAO em suas aplicaes de SQLWindows.
I m p o r t a n t e : Para actualizar dados da IMAGEM e do TEXTO, voc precisa de usar PARA a

clusula LONGA da ACTUALIZAO (uma extenso de Gupta) em vez do padro PARA a clusula da ACTUALIZAO. Para mais informao, ler a escrita d a seo e a recu pera o de dado s da IM AGEM e do TE XTO na pgina 5 - 3 7 .

Voc pde codificar uma aplicao tpica como segue: ! Modalidade ajustada do resultado da inutilizao; se no, ns buscaremos! somente uma fileira de cada vez. SqlSetResultSet (hSql, FALSOS)
! Compilar a indicao, execut-la,

! e nomear o cursor. SqlPrepare (hSql,' chave SELETA, timestamp, nome' || ' Do foo em: chave do df,: dfTS,: dfName' || ' PARA A ACTUALIZAO') SqlOpen (hSql,' CurA') ! Posicionar-nos sobre a fileira apropriada. SqlFetchNext (hSql, nRetVal) ! Comutar a um outro contexto (o punho do SQL) ! para segurar a ACTUALIZAO. ! Apontar ao SELETO alvejado para a ACTUALIZAO perto! provendo o cursor nomeado. SqlPrepare (hSql2,' nome AJUSTADO do foo da ACTUALIZAO =: dfName' || ' ONDE CORRENTE de CurA') SqlExecute (hSql2) Cometer a mudana (o sybautocommit=off presumido est na lima de SQL.INI) destri o contexto do SELETO (a menos que o CCP foi permitido para os cursores apropriados).
N o t a : Ao contrrio de PARA CONSULTAR (que cria uma cpia provisria dos resultados

ajustados de que fileiras so buscadas), PORQUE A ACTUALIZAO uma operao verdadeira, posicionada da actualizao. A "inteno fechamentos actualizao" prendida na tabela real at o EOF ou uma CONSIGNAO, assim que voc come menos simultaneidade com PARA ACTUALIZAO do que com PARA CONSULTA.
Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase Actualizaes posicionadas

Actualizaes e fetchrow posicionados


As fileiras so buscadas nos grupos feitos sob medida para os amortecedores alocados na camada da mensagem de rede. Os punhos permitem que a aplicao controle a maneira que os dados so emitidos atravs da rede. O fetchrow da palavrachave na lima de SQL.INI (ver o fetchrow na pgina 5 - 1 8 ) usado ao pedido da camada das comunicaes que fileiras mltiplas do pacote dos dados por a rede busca a mensagem de volta Rede-Net-Library. SQLRouter/Sybase executa os punhos para indicaes SELETAS explcitas nos procedimentos armazenados que contm uma nica indicao SELETA. Durante actualizaes e supresses posicionadas, as fileiras so buscadas sempre um de cada vez. Conseqentemente, estas operaes no so afetadas pelo ajuste do fetchrow. Desde o cliente e o usurio deve estar "na sincronizao" nos termos da fileira atual posicionar, permitindo fileiras mltiplas ser buscado a nvel da rede no apropriado. Para razes de desempenho, voc tipicamente no quer usar SELETO... PARA pedidos da ACTUALIZAO a menos que voc o mandar jogos ou muito pequeno do resultado o pensar provvel sua aplicao precisar de fazer uma actualizao posicionada ou de suprimi-la ao buscar fileiras de um jogo do resultado.
N o t a : SQLRouter/Sybase depende do defeito que trava o comportamento da base de dados

de Sybase (a menos que o usurio muda explicitamente este comportamento). Voc deve usar a opo de PARTE em suas indicaes SELETAS sempre que possvel evitar a disputa do fechamento.

O mais enfileira seus esforos da aplicao por a mensagem, mais por muito tempo toma para que o controle retorne aplicao. Assim, os usurios de sua aplicao podem realmente perceber o melhor desempenho com valores menores do fetchrow, desde que a aplicao pode povoar uma janela da tabela, a caixa de lista, ou o outro objeto mais logo. Os grandes valores do fetchrow podem mesmo fazer com que as fileiras desnecessrias estejam buscadas, se a fileira do interesse est ficada situada no incio do jogo do resultado e o amortecedor est enchido com as fileiras que esto rejeitadas eventualmente. Geralmente, maior o ajuste do fetchrow, mais rapidamente os jogos do resultado podem ser emitidos ao cliente. Entretanto, os problemas e os limites de amortecedor de passeio do protocolo influenciam o nvel que de desempenho voc pode esperar; em algum ponto voc pode mesmo experimentar a degradao de desempenho com um ajuste elevado do fetchrow. Os fatores including tamanho ajustado do resultado,
5Connecting Gupta Objects to Databases

tamanho tpico da fileira, configurao de rede, sistemas de explorao de cliente e de usurio, e exigncias de aplicao, todos afetam o ajuste ptimo deste valor. Voc pode igualmente precisar de aumentar o tamanho de pacote da rede (ver o r e m o te d b n a m e mais tarde neste captulo) para usar eficazmente esta caracterstica.
N o t a : Voc pode ajustar o nmero de fileiras recuperadas por a mensagem de

rede na lima de SQL.INI com a palavra-chave do fetchrow ou em sua aplicao de SQLWindows chamando a funo
SqlSetParameterAll.

Para a informao de fundo, ler a c t u a l i z a e s

posicionadas

na pgina

1-17.

Connecting Gupta Objects to Databases

7-

Liberando fechamentos
Voc pode expedir a liberao dos fechamentos em um jogo do resultado forando Sybase para fechar o cursor ajustado do resultado uma vez que voc buscou a ltima fileira de um jogo do resultado. Voc permite este comportamento using a p a l a v r a - c h a v e do closecursorateof no SQL.INI lima-file read o closecursorateof na pgina 5-17.

Cordas reservados

Os seguintes so palavras reservados de SQLRouter/Sybase, clusulas, ou nomes:

Chapter 5
CANCELAMENTO COM CURSOR _BIN2HEX_ _HEX_ CANCELAR TUDO

Connecting to Sybase
PARA A ACTUALIZAO LONGA Para mais informao sobre _BIN2HEX_, _HEX_, e PARA A ACTUALIZAO LONGA, ler a escrita da seo e a recuperao de dados da IMAGEM e do TEXTO na pgina 5-37.

Palavras-chaves de SQL.INI
Esta seo descreve as palavras-chaves que de SQL.INI voc quer ou precisa se usar para inicializar uma aplicao de SQLWindows que conecte a Sybase. Para mais informao sobre a lima de SQL.INI, ler aplicaes de inicializao de SQLWindows na pgina 2-5.

checkexists
Usar esta palavra-chave para come um erro aps ter executado uma ACTUALIZAO ou PARA SUPRIMIR da indicao que no tem nenhum efeito.
Secionar a [sybgtwy] descrio da sintaxe defeito do

fora de
c h e c k e x i s t s = { e m |f o r a d e }

Esta palavra-chave faz com que SQLRouter/Sybase retorne um erro quando a aplicao executa uma indicao da ACTUALIZAO ou da SUPRESSO que no tenha nenhum efeito (isto , nenhuma fileira na base de dados actualizado ou suprimida). O erro que SQLRouter/Sybase retorna #380, "VERIFICAO
5Connecting Gupta Objects to Databases

Example Notas

SQL.INI keywords

Exemplo

Se sua aplicao chama um procedimento armazenado para executar a ACTUALIZAO ou PARA SUPRIMIR da indicao (em vez de executar a indicao diretamente), SQLRouter/Sybase no pode determinar eventualmente fileiras era afetado. Conseqentemente, sua aplicao no come o erro, mesmo se voc ajustou checkexists a sobre e nenhuma fileira era actualizado ou suprimida pelo procedimento armazenado. Esta indicao faz com que uma aplicao come a "VERIFICAO EXISTE falha" se a aplicao executa uma indicao da ACTUALIZAO ou da
checkexists=on

closecursorateof
Usar esta palavra-chave para forar o closing de um cursor ajustado do resultado uma vez que voc buscou a ltima fileira desse jogo do resultado. [sybgtwy] fora de Section Default Syntax Description closecursorateof= {em|fora de} Se voc ajustaram esta palavra-chave a "OFF" (ou voc aceitar este valor revelia), voc mantem o cursor ajustado do resultado (e seu fechamento nas fileiras no resultado ajustado) at que voc execute com sucesso uma CONSIGNAO ou um ROLLBACK, ou at que voc desconecte da base de dados. Se voc ajustou esta palavra-chave a "ON" (e ao CCP fora-offsee a p re se rv a o d o con tex to d o curso r na pgina 5 - 4 ) , voc perde o cursor ajustado do resultado (e seu fechamento nas fileiras no resultado ajustado) uma vez que voc buscou a ltima fileira do jogo do resultado. Ajustar esta palavra-chave a "ON" permite que voc execute indicaes de DML (lngua de manipulao de dados) (tais como a ACTUALIZAO, SUPRIMIR, INSERO) na mesma tabela de que voc come um jogo do resultado (com uma indicao SELETA). Se voc no ajusta esta palavra-chave a "ON", uma indicao de DML que opere sobre essa tabela falhar (tempo para fora); isto porque a indicao SELETA que conseguiu o resultado se ajustar ainda no primeiro lugar tem um fechamento nessa tabela. Este exemplo (o CCP de suposio est) causa o cursor em um resultado ajustado para ser fechado uma vez que a ltima fileira desse resultado ajustado foi buscada; isto libera o fechamento na tabela de que voc come o jogo do resultado.
closecursorateof=on

o comdll identifica o SQLRouters disponvel entre SQLWindows (ou uma aplicao de cliente
criada com o SQLWindows) e a base de dados. Seo [win32client.dll]

Connecting Gupta Objects to Databases

7-

Example

Chapter 5

Connecting to Sybase

fetch L=communication_dll_name do comdl da sintaxe row ault Syntax Description A descrio esta palavra-chave identifica o nome de arquivo de um DLL de SQLRouter. Voc pode pr mais de um comdl l indicao na lima de SQL.INI. O valor do communication_dll_name a usar-se para SQLRouter/Sybase sqlsyb32.
Exemplo comdll=sqlsyb32 As notas para informao relacionada, lidas conectam a ordem da busca na pgina 1-6.

enablemultipleconnections
Usar esta palavra-chave para forar a criao de uma conexo nova base de dados para cada chamada a SqlConnect. Section Default fora de Syntax Description
enablemultipleconnections= {em|fora de} [sybgtwy]

Se esta palavra-chave ajustada a "ON", voc come uma conexo nova base de dados cada vez que voc chama SqlConnect, mesmo se o argumento do punho do SQL a SqlConnect est associado com o mesmo usurio - identificao, senha, e nome de base de dados como um do SQL j conectado segura. Se esta palavra-chave est ajustada a "OFF", e voc j chamou SqlConnect pelo menos uma vez, voc pode ou no pode come uma conexo nova base de dados quando voc chama SqlConnect outra vez. Voc no come uma conexo nova se o argumento do punho do SQL na chamada associado com o mesmo usurio - identificao, senha, e nome de base de dados como um do SQL j conectado segura; se no, voc come uma conexo nova. Este exemplo fora a criao de uma conexo nova base de dados para cada chamada a SqlConnect.
enablemultipleconnections=on

Esta palavra-chave especific o nmero de fileiras que mximo SQLRouter/Sybase recupera para cada mensagem de rede durante operaes do cursor (busca) em um jogo do resultado.
[sybgtwy]

20
fetchrow=number_of_rows

os number_of_rows devem ser um inteiro positivo (mas no pr a mais o sinal).

5-

Connecting Gupta Objects to Databases

SQL.INI keywords

O usurio usa uma disposio para prender os valores buscados da coluna. SQLRouter/Sybase recupera fileiras para cada esforo da rede pedido, de acordo com o seguinte algoritmo: 1. Tomar a largura da coluna a mais larga e dividi-la no tamanho mximo do amortecedor da disposio.
do fetchrow,

2. Se o valor calculado menor do que o valor


usar o valor calculado.

3. Se no, usar o valor do fetchrow.Se nenhum valor definido, usar o valor de defeito de 20. O valor atribudo ao fetchrow no usado se: Voc usa PARA a clusula da ACTUALIZAO em uma indicao SELETA (CORRENTE do cursor).

Exemplo

Voc especific uma coluna LONGA na lista SELETA. Voc pode melhorar o desempenho atribuindo um valor apropriado ao fetchrow. Para conseguir o bom desempenho, voc deve balanar o nmero de fileiras por o esforo (que aumenta a memria usada) de encontro necessidade do sistema de explorao para a memria (que faz com que o sistema de explorao troque a memria quando no bastante est disponvel). Sua aplicao de SQLWindows ainda recebe uma nica fileira para cada chamada a SqlFetchNext, no obstante o valor atribudo ao fetchrow.
fetchrow=10

Este exemplo indica que voc quer buscar somente uma nica fileira (de fato, incapacitando a caracterstica).
fetchrow=1

meout do lockti
Usar esta palavra-chave para ajustar o nmero de esperas dos segundos SQLRouter/Sybase para que Sybase responda a um pedido do incio de uma sesso ou executem uma indicao.
[sybgtwy]

Descrio da do sintaxe defeito

segundo espera 60 para o incio de uma sesso; espera infinita para que as indicaes executem
=number_of_seconds do imeout do lockt

da seo

Esta palavra-chave ajusta o intervalo de parada do incio de uma sesso e o


Connecting Gupta Objects to Databases

7-

Example number_of_seconds para que o usurio obtenha os recursos que precisa de executar uma indicao (intervalo de parada da execuo da indicao). Se voc ajusta number_of_seconds a zero, SQLRouter/Sybase usa os valores de defeito de 60 segundos para o intervalo de parada do incio de uma sesso, e a infinidade (espera para sempre) para o intervalo de parada da execuo da indicao. Quando o intervalo de parada expira, SQLRouter/Sybase notifica Sybase para abandonar a tentativa de conectar (intervalo de parada do incio de uma sesso) ou a tentativa de executar a indicao (intervalo de parada da execuo da indicao). Notas Esta palavra-chave ajusta o valor de intervalo de parada para toda a aplicao de SQLWindows e para todas as conexes a aplicao faz a Sybase. Para ajustar (ou ultrapassagem) o valor de intervalo de parada em sua aplicao, chamar SqlSetParameter com o argumento de DBP_LOCKWAITTIMEOUT, ou chamar SqlLockWaitTimeout.

Chapter 5

Exemplo

Este exemplo ajusta o intervalo de parada do incio de uma sesso e o intervalo de parada da execuo da indicao a trs minutos:
locktimeout=180

Connecting to Sybase

og

Usar esta palavra-chave para ativar o registro de atividade de SQLRouter. [win32client. syb32]

log=fully_qualified_file_name Section Syntax Description Voc pode especific todo o trajeto ou nome de arquivo para a palavra-chave. Se a lima j existe, overwritten. Uma vez que a palavra-chave especific, registrar est executado automaticamente com cada iniciao de SQLRouter. Voc pode aplicar umas ou vrias das seguintes opes diferenciando maisculas e minsculas para personalizar a sada: /Bx - excluir a exposio de valores variveis do ligamento /F um-aappend a lima existente /FD - dados do esforo da exposio /Ld - dados LONGOS da exposio lidos/redigidos /Tx - excluir a exposio dos timestamps Incorporar as opes exatamente como mostrado, mantendo letras de caixa as letras caixas e lower-case lower-case. O seguinte exemplo conduz a uma lima de registro que no inclua timestamps em entradas (espao de conservao) e em exposies a entrada e a sada de todos os (isto , TEXTO ou IMAGEM) artigos de dados LONGOS.

5-

Connecting Gupta Objects to Databases

Palavras-chaves de SQL.INI

[winclient. syb32] log= c:\gupta\sybsys11.log /Tx /Ld

amortecedor longo
Esta palavra-chave especific o nmero de bytes mximo do tipo de dados longo colunas para recuperar ou emitir, e trunca bytes adicionais. Defeito das sees Descrio da sintaxe
[sybgtwy]

32768. Ajustar um valor menos do que o defeito far com que o valor seja restaurado ao defeito.
fer=number_of_bytes do longbuf

O tamanho mximo desta palavra-chave limitado somente por confinamentes do sistema de explorao. Reduzir o valor desta palavra-chave para conservar a memria ou reduzir o trfego de rede. Se voc usa fe r do longbuf para limitar o nmero de bytes para recuperar, os dados recuperados esto truncados. Para evitar truncar dados longos, ajustar o valor igual ao tipo o maior tamanho dos dados que suas aplicaes precisam de ler. A palavra-chave do longbuffer aplica-se a todas as bases de dados definidas na seo [sybgtwy]. Voc no pode especific um valor do longbu f f e r maior do que o tamanho mximo para que o tipo de dados seja recuperado.
I m p o r t a n t e : Voc pode igualmente ajustar esta varivel de ambiente em sua aplicao de

Exemplo

longbuffer=65536

SQLWindows. Se voc faz, chamada S q l S e t P a r a m e t e r A l l com o parmetro de DBP_LONGBUFFER; no ajustar o tamanho deste amortecedor com a indicao TransacionarTransact-SQL AJUSTADA.

remotedbname
Usar esta palavra-chave para especific nomes de base de dados e informao associada.

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

Secionar descrio da sintaxe

[sybgtwy] o dbname remoto =db_name1, usurio, db_name2,

network_packet_size db_name1 especific o nome de base de dados enquanto sabido pela aplicao de SQLWindows; o nome no pode ser mais de 8 carteres por muito tempo. o usurio especific o nome do usurio de Sybase em que a base de dados ficada situada. O nome de usurio pode ser encontrado na lima de Sybase SQL.INI situada no sub-directrio aberto da instalao do cliente. db_name2 especific o nome de base de dados real como conhecido pelo usurio. Este

5-

Connecting Gupta Objects to Databases

Exemplos das notas

network_packet_size um parmetro opcional que especific o tamanho de pacote da rede para se usar para esta conexo do usurio. Se voc omite este parmetro ou lhe d um valor de zero, a conexo usa o tamanho de pacote da rede do defeito negociado entre a Cliente-Client-Library/Net-Library e o usurio durante conecta o processamento. Para informao relacionada, lido conectar a ordem da busca na pgina 1-6. Este exemplo especific uma base de dados conhecida por sua aplicao de SQLWindows como publicaes. Esta base de dados ficada situada no usurio SYBASE11. O usurio sabe esta base de dados como pubs2. O tamanho de pacote da rede o defeito negociado entre a Cliente-Client-Library e o usurio.
remotedbname=PUBS, SYBASE11, pubs2, 0

Este exemplo difere do de precedncia em pedidos desse SQLRouter/Sybase um tamanho de pacote da rede de 2048 bytes quando tenta conectar base de dados.
remotedbname=PUBS, SYBASE1 1, pubs2, 2048

substituto
Usar esta palavra-chave para especific que a corda no primeiro parmetro deve substituir a corda no segundo parmetro sempre que o primeiro parmetro aparece em uma indicao de SQL. Sees
[sybgtwy]

=original_string substitute da sintaxe , substitute_string Os valores da descrio para esta palavra-chave so diferenciando maisculas e minsculas e so separados por uma vrgula (no um espao). Voc pode ter um nmero ilimitado de indicaes substitute na lima da iniciao. Entretanto, esta indicao muda todas as ocorrncias da palavra substituda em seus indicao-statements operators do SQL, ONDE clusulas, nomes de objeto, e literals (mas no variveis do ligamento). A segunda corda pode incluir a primeira, como em: substitute=od, impar
I m p o r t a n t e : As cordas podem incluir espaos em branco encaixados, mas no vrgula-voc

deve usar uma vrgula para separar original_string de substitute_string.

As notas porque cada indicao de SQL analisada gramaticalmente, tendo indicaes substitute em sua lima de SQL.INI adicionam uma pequena quantidade de despesas gerais compilao daquelas indicaes. Se voc no est funcionando nenhum software de Gupta que exige a substituio, voc pode querer remover estas indicaes da lima.
Connecting Gupta Objects to Databases

7-

SQL.INI keywords

Se voc no quer ter nenhuma substituies feita, deixar esta palavra-chave fora da lima de SQL.INI ou comentar para fora todas as linhas que tiverem esta palavra--no tm uma linha que olhe como esta:
substitute=

O exemplo a indicao substitute abaixo poderia ser usado com uma aplicao que (por exemplo) encerrasse nomes da tabela nas citaes. Se voc no pode modificar a aplicao, e se a base de dados que voc est conectando a aplicao no aceita citaes dobro, voc pode mandar SQLRouter descasc-las como segue:
substitute=",

sybapplicationname
Usar esta palavra-chave para definir o nome de aplicao de cliente ao entrar ao usurio de base de dados.
[sybgtwy]

Gupta Sybase App

sybapplicationname=program_name on Default Syntax Description

o program_name armazenado no dbo.sysprocesses da base de dados mestra para a conexo. SQLRouter/Sybase define o @APPNAME reservado do identificador como o ttulo da janela top-level da aplicao. Notes Esta indicao define o nome de aplicao do cliente ao entrar ao usurio de base de dados como MYAPP: Example
ionname=MYAPP do sybapplicat

sybautocommit
Usar esta palavra-chave para girar o autocommit de ligar/desligar. Secionar [sybgtwy] Defeito de f Sybautocommit= da sintaxe {em|de f} A descrio para girar sobre o autocommit, ajustou o sybautocommit a sobre; para desligar o autocommit, ajustar o sybautocommit a fora. As notas para mais informao sobre o autocommit, leram Autocommit e acorrentaram transaes na pgina 5-2.

5-

Connecting Gupta Objects to Databases

Example

SQL.INI keywords

Captulo 5 que conecta a Sybase

Voc pode igualmente girar o autocommit sobre e fora em suas aplicaes de SQLWindows chamando SqlSetParameter. Por exemplo, para incapacitar o autocommit, fazer a qualquer um um das seguintes chamadas:
Chamar SqlSetParameter (hSql, DBP_AUTOCOMMIT, FALSO, o strNull) Chamar SqlSetParameterAll (hSql, DBP_SYBAUTOCOMMIT, FALSO, strNull, VERDADEIROS)

Exemplo

Chamar qualquer uma destas funes cancela o valor da palavra-chave do sybautocommit na lima de SQL.INI.
sybautocommit=on

s y b m a x m e s sa g e s
Usar esta palavra-chave para instruir SQLRouter/Sybase como conservar as mensagens rotineiras emitidas do usurio.
[sybgtwy]

on Default Syntax Description 0.0


=max_messages das idades dos ss do sybmaxme, max_length

os max_messages especific o nmero de mensagens mximo a ser conservadas. o max_length especific o comprimento mximo de uma mensagem conservada; este parmetro opcional. Todo o texto de mensagem alm do limite especific truncado. Se voc no especific o max_length, o defeito de 1024 bytes (comprimento de mensagem cheio) est supor.
N o t a : O comprimento de mensagem sempre em favor da contagem da mensagem.

O seguinte exemplo conservado um mximo de 30 mensagens, e limita cada mensagem a 100 bytes. Estes ajustes limitam a quantidade de memria usada para armazenar mensagens a 3660 bytes.
sybmaxmessages=30, 100

O seguinte exemplo conserva um mximo de 300 mensagens com comprimento de mensagem cheio (1024 bytes). Estes ajustes limitam a quantidade de memria usada para armazenar mensagens a 313.800 bytes. Desde que o amortecedor de mensagem limitado muito a menos (64.000 bytes), o nmero de mensagens real conservadas pode ser consideravelmente menos de 300 o nmero conservado dependero do tamanho das mensagens.

Connecting Gupta Objects to Databases

7-

Notes
sybmaxmessages=3 00

O seguinte exemplo conserva um mximo de 30 mensagens e rejeita todo o text-only da mensagem o nmero de mensagem e o nvel da severidade conservado. Estes ajustes limitam a quantidade de memria usada para armazenar mensagens ao meros 660 bytes.
sybmaxmessages=30, 0

sybtracefile
Usar esta palavra-chave para invocar a facilidade do trao da Cliente-Client-Library para a eliminao de erros.

Section Syntax Description [sybgtwy]


sybtracefile=c: \ sybase \ sybase. registro

A lima de trao pode produzir a informao til ao suporte laboral de Sybase quando um problema ocorre em um componente de software de Sybase. A lima de trao configurada automaticamente para despejar toda a informao de eliminao de erros disponvel. A lima de trao pode rapidamente crescer completamente grande. Igualmente exige que a verso da eliminao de erros da Cliente-Client-Library esteja instalada. Se a verso da eliminao de erros no encontrada durante a primeira tentativa do INCIO DE UMA SESSO, SQLRouter/Sybase gera uma caixa de dilogo que relata o erro e continua com seguimento incapacitou. Se voc no quer fazer nenhum traado, deixar esta palavra-chave fora da lima de SQL.INI ou comentar para fora todas as linhas que tiverem esta palavra--no tm uma linha que olhe como esta:
sybtracefile=

sybworkstationname
Section Usar esta palavra-chave para definir o nome da mquina por que os clientes se identificam. Default Syntax [sybgtwy] Description
workstation_name

ionname=hostname do sybworkstat

armazenado na entrada da conexo do dbo.sysprocesses da base de dados mestra. Voc pode indic-lo dentro dos procedimentos armazenados de determinado sistema (por exemplo, s p _ w h o ) sempre que voc tem uma conexo viva ao usurio.
o hostname

SQLRouter/Sybase define o @WORKSTATION reservado do identificador como o nome do computador do cliente Example Se voc no especific um valor para esta palavra-chave, o valor literal usado workstation_name.
5-

Connecting Gupta Objects to Databases

SQL.INI keywords

Esta indicao define o nome da mquina de cliente como MYHOST:

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

ionname=MYHOST do sybworkstat

yieldonservercall
Usar esta palavra-chave para permitir e configurar o processamento assncrono para as aplicaes que conectam a um usurio de Sybase using SQLRouter/Sybase.
[sybgtwy]

Section Default valor y i e l d o n s e r v e r c a l d o l = n u m e r i c _ Syntax Description o n u m e r i c _ v a l u e deve ser um inteiro no meio - 60 e

600 inclusivos.

O processamento assncrono permite que uma aplicao de SQLWindows emita pedidos ao usurio de Sybase para o processamento e peridicamente a votao para uma resposta. Entre votaes, a aplicao pode fazer o outro trabalho ou rendimento ao sistema de explorao (Microsoft Windows) para permitir outras tarefas funcionar. Uma funo especial (a funo de rechamada) determina o que a aplicao faz entre votaes. SQLWindows define uma funo de rechamada do defeito para voc; esta funo rende ao sistema de explorao. Se voc incapacita o processamento assncrono, sua aplicao de SQLWindows no retorna o controle ao sistema de explorao entre o tempo onde a aplicao emite um pedido ao usurio e ao tempo recebe uma resposta. Para incapacitar o processamento assncrono, ajustar o yieldonservercall a zero (ou comenta para fora a indicao). Para permitir o processamento assncrono, ajustar o yieldonservercall a um valor diferente de zero na escala - de 60 a 600. Um valor diferente de zero define um intervalo de votao para SQLRouter/Sybase. Um valor positivo define um intervalo de votao mnimo medido nos dcimos de um segundo; um valor negativo define um intervalo de votao mximo medido nos segundos. Depois que cada pedido da votao, SQLRouter/Sybase invoca a funo de rechamada. Se voc atribui um valor positivo ao yieldonservercall, voc est especific o intervalo de tempo mnimo entre pedidos da votao. Em cima de cada retorno da funo de rechamada, SQLRouter/Sybase determina se o intervalo de tempo mnimo passou. Em caso afirmativo, SQLRouter/Sybase vota para uma resposta do usurio; se no, SQLRouter/Sybase retorna imediatamente funo de rechamada. Se voc atribui um nmero negativo ao yieldonservercall, voc est ajustando o intervalo de votao mximo ao valor absoluto deste nmero; SQLRouter/Sybase que determina a freqncia real da votao para voc. SQLRouter/Sybase vota muito frequentemente inicialmente (sobre duas vezes um segundo), mas o intervalo de votao aumenta rapidamente sobre o tempo, at o valor que mximo voc se ajusta. Este algoritmo supor que, sobre o tempo, uma estadia de resposta talvez mesmo de diversos segundos se torna distante menos significativa relativo ao tempo total exigido para cumprir o pedido. Reduzindo a votao desnecessria
5Connecting Gupta Objects to Databases

Stored procedures

melhora a compreensibilidade do ambiente e reduz o trfego de rede geralmente. Sob a maioria de circunstncias, um ajuste de +10 (1 chamada/em segundo) ou - 5 (intervalo de votao dinmico com um mximo de 5 segundos) permitem o tempo de resposta razovel e o controle liso do ambiente de funcionamento. Voc deve usar estes valores se voc supor que toda a tarefa que ganhar o controle durante a funo de rechamada retorna o controle a SQLRouter/Sybase em tempo oportuno, e que a funo de rechamada rende ao sistema de explorao. (Como toda a outra aplicao, SQLRouter/Sybase deve esperar o retorno do controle da funo de rechamada antes que puder votar o usurio de base de dados outra vez.)

Procedimentos armazenados
Voc pode chamar procedimentos armazenados, execut-los em Sybase, e recuperar jogos dos resultados e o status do retorno deles usando as seguintes funes do SAL em sua aplicao de SQLWindows. Estas funes so:
SybExecuteProc na pgina 5-29 SybExecuteProcEx na pgina 5-30 SybGetNextResults na pgina 5-31 SybGetReturnStatus na pgina 5-32 SybPrepareNextResults na pgina 5-34 SybPrepareProc na pgina 5-33

Voc pode igualmente executar procedimentos armazenados using, por exemplo, SqlPrepare e SqlExecute. Entretanto, voc deve fazer este somente para os procedimentos armazenados que no retornam o resultado ajustar-setswhen voc executa um procedimento armazenado chamando SqlPrepare e SqlExecute, SqlPrepareAndExecute, e assim por diante, quaisquer jogos do resultado que o procedimento armazenado possa retornar est rejeitado. Os procedimentos armazenados podem executar todas as operaes usuais do SQL, including actualizaes posicionadas. Para alguma informao geral em procedimentos armazenados, ler procedimentos armazenados na pgina 1-21.

Using cursores com procedimentos armazenados


SQLRouter/Sybase executa automaticamente cursores da biblioteca do cliente para tudo indicaes SELETAS. Voc pode declarar seus prprios cursores para procedimentos armazenados como segue:
Chamada SybPrepareProc (hSql,
Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

' sp_one_select com cursor',': dfOut1')

5-

Connecting Gupta Objects to Databases

Stored procedures

COM clusula do CURSOR uma extenso lngua do SQL compreendida por SQLRouter/Sybase. Usando COM CURSOR, voc instrui SQLRouter/Sybase para declarar um cursor para o procedimento armazenado. Voc pode declarar um cursor somente para os procedimentos armazenados que tm exatamente uma indicao SELETA da statementa-um do SQL. Se um procedimento armazenado tem mais de uma indicao SELETA, ou indicaes de SQL que no so indicaes SELETAS, sua tentativa de declarar falhas de um cursor. Se voc tenta executar uma indicao de SQL em qualquer outro punho do SQL quando as fileiras ou os jogos adicionais do resultado permanecerem unfetched de um procedimento armazenado, voc come o seguinte erro da Cliente-Client-Library:
30041: "Esta rotina no pode ser chamada porque uma outra estrutura de comando tem os resultados pendentes."

Voc deve buscar todos os jogos restantes do resultado do procedimento armazenado ou cancel-los. Se o CCP est, voc pode cancelar jogo ativo do resultado (e todo o resultado pendente se ajusta para todos os punhos do SQL na mesma conexo) preparando uma indicao nova no mesmo punho do SQL. O seguinte exemplo ilustra uma tcnica que use um comando "dummy" causar o cancelamento.
Chamada SqlPrepare (hSql, ' SELECIONAR * de dbo.sysobjects
2') ONDE 1 =

Se o CCP est, voc pode usar a indicao do CANCELAMENTO (em vez de preparar um comando novo) para cancelar resultado ativo ajustado e todos os jogos pendentes do resultado para todos os punhos do SQL na mesma conexo imediatamente. Esta indicao uma extenso lngua do SQL compreendida por SQLRouter/Sybase. Using o CANCELAMENTO a indicao a maioria de maneira eficaz de cancelar todos os jogos pendentes do resultado.
Chamada SqlPrepareAndExecute (hSql,' cancelamento')

Se o CCP est, e voc chama S q l C o m m i t (ou executar a indicao da CONSIGNAO), voc cancela implicitamente durante jogos do resultado em todos os punhos do SQL na mesma conexo, no apenas o punho especific como um argumento funo. Por exemplo, a chamada abaixo no cancela durante jogos do resultado apenas para o hSqlA, mas para todos punhos abertos restantes do SQL na conexo (o CCP de suposio est).
Chamada SqlCommit (hSqlA)

Como COMETER, um ROLLBACK cancela implicitamente todos os jogos pendentes do resultado em todos os punhos do SQL (o CCP fornecido est). Por exemplo, a chamada abaixo no cancela durante jogos do resultado apenas para o hSqlA, mas para todos punhos abertos restantes do SQL na conexo.
Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

A chamada SqlPrepareAndExecute (hSqlA,' rollback') fechando a conexo igualmente

cancela todos os jogos pendentes do resultado.

5-

Connecting Gupta Objects to Databases

Stored procedures

I m p o r t a n t e : Se o CCP est ligada, preparar uma indicao nova em um punho dado do SQL,

ou executar um CANCELAMENTO, cancelamentos COMETEM, ou das ROLLBACK apenas os associados ajustado com o punho que do SQL voc especific, no todos os jogos do resultado do resultado para todos os punhos do SQL na mesma conexo.

SybExecuteProc
Usar esta funo para executar um procedimento armazenado ou uma seqncia de indicaes de SQL. b O k = S y b E x e c u t e Proc da sintaxe (hSql, strStatements, strIntoList)
Punho do Sql:

corda do hSql: corda dos


strStatements:

strIntoList
Punho

do hSql-A dos parmetros que identifica um contexto da conexo base de dados. procedimento armazenado do strStatements-The ou indicaes de SQL a ser executadas. lista do strIntoList-The em variveis em que os valores ajustados do resultado de procedimento armazenado (eventualmente) so retornados.

Descrio

SybExecuteProc executa o procedimento armazenado ou a seqncia das indicaes de SQL especific nos strStatements. Para na primeira indicao SELETA (eventualmente) e os retornos que o resultado se ajustou do esse indicao-statement call SqlFetchNext repetidamente para recuperar as fileiras no jogo do resultado. Se o resultado adicional dos retornos de procedimento armazenado se ajusta, chamar SybGetNextResults uma vez para cada jogo adicional do resultado. Separar as variveis alistadas no strIntoList com vrgulas e preceder cada nome varivel com uns dois pontos. Se as fileiras zero dos retornos de procedimento armazenado, as variveis no sustento do strIntoList o que valores tiveram antes da chamada a SybExecuteProc. Se voc sabe o procedimento armazenado no executa alguns indicaes SELETAS (isto , no retorna nenhuma jogos do resultado), especific o strNul l do valor para o strIntoList. Se o procedimento armazenado aceita parmetros da entrada, voc pode especific literals, constantes, ou variveis do ligamento (de algum tipo exceto a CORDA LONGA) como argumentos da entrada.
Nota: Mesmo que voc no possa especific uma varivel LONGA do ligamento da CORDA

como um parmetro da entrada a um procedimento armazenado, h uma exceo: voc pode especific uma varivel do ligamento atribuiu uma corda d e e x a t a m e n t e 255 bytes.

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

Se os valores dos retornos de procedimento armazenado em parmetros de sada, voc devem fornecer argumentos da sada a fim chamar o procedimento. Entretanto, voc no pode recuperar os valores dos argumentos da sada - SQLRouter/Sybase no suporta o retorno dos valores de parmetros de sada de um procedimento armazenado a sua aplicao de SQLWindows.

5-

Connecting Gupta Objects to Databases

Stored procedures

N o t a : Voc pode trabalhar em torno deste limitao-restrictionread

a recuperao de

valores de parmetro da sada na pgina 5-35. O bOk do retorno do valor est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. Os exemplos esta funo so demonstrados na aplicao de amostra
SQLSYBS3. APP.

SybExecuteProcEx
Usar esta funo para executar um procedimento armazenado ou uma seqncia de indicaes de SQL quando voc no sabe se os retornos que de procedimento armazenado todo o resultado se ajusta. bOk=SybExecute ProcEx da sintaxe (hSql, strStatements, strIntoList, testas)
Punho do Sql: corda do hSql: corda dos strStatements: o

strIntoList recebe
booleano: testas

Punho do hSql-A dos parmetros que identifica um contexto da conexo base de dados. procedimento armazenado do strStatements-The ou indicaes de SQL a ser executadas. lista do strIntoList-The em variveis em que os valores ajustados do resultado de procedimento armazenado (eventualmente) so retornados. Testa-bRowsFlag que indica se o procedimento armazenado pode retornar fileiras (mas no se alguma fileira est retornada realmente).

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

Descrio

Quando SybExecuteProcEx chamado, faz com que todas as indicaes no procedimento armazenado acima com a primeira indicao SELETA estejam executadas, a seguir retorna o resultado ajustado dessa indicao SELETA. A chamada SqlFetchNext repetidamente para buscar as fileiras no jogo do resultado, chama ento SybGetNextResults para executar acima as indicaes seguintes no procedimento armazenado com a indicao SELETA seguinte. Separar as variveis alistadas no strIntoList com vrgulas e preceder cada nome varivel com uns dois pontos. Se as fileiras zero dos retornos de procedimento armazenado, as variveis no sustento do strIntoList o que valores tiveram antes da chamada a SybExecuteProcEx. As testas do parmetro esto ajustadas PARA RECTIFICAR se o procedimento armazenado executa pelo menos uma indicao SELETA (mesmo se a indicao retorna as fileiras zero). Se o procedimento armazenado no executa uma indicao SELETA, as testas esto ajustadas a FALSO. Se o procedimento armazenado aceita parmetros da entrada, voc pode especific

5-

Connecting Gupta Objects to Databases

Stored procedures

N o t a : Mesmo que voc no possa especific uma varivel LONGA do ligamento da CORDA

como um parmetro da entrada a um procedimento armazenado, h uma exceo: voc pode especific uma varivel do ligamento atribuiu uma corda d e e x a t a m e n t e 255 bytes.

Se os valores dos retornos de procedimento armazenado em parmetros de sada, voc devem fornecer argumentos da sada a fim chamar o procedimento. Entretanto, voc no pode recuperar os valores dos argumentos da sada - SQLRouter/Sybase no suporta o retorno dos valores de parmetros de sada de um procedimento armazenado a sua aplicao de SQLWindows.
N o t a : Voc pode trabalhar em torno deste limitao-restrictionread

a recuperao de

valores de parmetro da sada na pgina 5-35.


Exemplo do retorno d o valor

o bOk est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. Este exemplo armazena um procedimento em Sybase, a seguir executa esse procedimento armazenado ao verific se os retornos de procedimento resultam jogos.
Chamada SybExecuteProc (hSql, o `cria o @switch int do authorproc do procedimento como se @switch = 1 selecionar o au_lname dos autores mais os autores da actualizao ajustaram = do au_lname \' manequim \' onde = do au_lname \' cognoscente \'','') Chamada SybExecuteProcEx (hSql,' authorproc 1 do exec',': df1', testas) se testas Chamada SqlFetchNext (hSql, nFetchInd) Chamada SybExecuteProcEx (hSql,' authorproc 2 do exec',': df1', testas) se testas Chamada SqlFetchNext (hSql, nFetchInd) Mais Chamada SalMessageBox (fileira do `actualizado. ','

SybGetNextResults
Usar esta funo para come o resultado seguinte ajustado de um procedimento armazenado.
bOk=SybGetNextResults

da sintaxe (hSql, strIntoList)


Punho do Sql:

corda

do hSql:

strIntoList

Punho

do hSql-A dos parmetros que identifica um contexto da conexo base de dados.

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

Return Value Example Description lista do strIntoList-The em variveis em que os valores ajustados do resultado de procedimento armazenado (eventualmente) so retornados. Os resultados de procedimentos armazenados so retornados em uns ou vrios jogos com zero ou mais fileiras em cada jogo. SybExecuteProc retorna o primeiro jogo do resultado. Usar SybGetNextResult para recuperar jogos subseqentes. Cada jogo de dados retornado nas variveis especific pelo strIntoList.

Separar as variveis alistadas no strIntoList com vrgulas e preceder cada nome varivel com uns dois pontos. Se as fileiras zero dos retornos de procedimento armazenado, as variveis no sustento do strIntoList o que valores tiveram antes da Return Value chamada a SybGetNextResults. Notes Example o bOk est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. Uma vez que voc recuperou o jogo seguinte do resultado, chamada SqlFetchNext repetidamente para buscar cada fileira dos dados no jogo do resultado. Esta funo demonstrada na aplicao de amostra SQLSYBS
1. APP. SybGetReturnStatus

unction Syntaxthe return status from a stored procedure. bOk=SybGetReturnStatus (hSql, nRet Val) to get

e: hSql nRet Val

ndle that identifies a connection context to the database. nRetVal-The return value from a stored proce Parameters

Description Esta funo atribui o status do retorno de um procedimento armazenado a nRetVal. Voc pode come o status do retorno (como definido por Sybase) somente depois que voc buscou a ltima fileira do ltimo jogo do resultado retornado pelo procedimento armazenado. Se voc prepara e executa uma outra indicao no mesmo punho (hSql) antes de chamar SybGetReturnStatus, voc pode j no obter o status do retorno para o procedimento armazenado. Entretanto, voc pode executar operaes em um punho diferente do SQL (chamada including de SybGetReturnStatus com um punho diferente para come o status do retorno de um procedimento armazenado diferente) e ainda voltar e come o status do retorno do procedimento armazenado associado com o hSql. o bOk ajustado PARA RECTIFICAR se o status do retorno estava disponvel e a FALSO se no estava disponvel. Se o bOk FALSO, o valor de nRetVal indeterminado.
5Connecting Gupta Objects to Databases

Stored procedures

Esta funo demonstrada na aplicao de amostra SQLSYBS


1. APP.

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

SybPrepareProc
Usar esta funo para preparar um procedimento armazenado para a execuo.
bOk=SybPrepare

Proc da sintaxe (hSql, strStatements, strIntoList)

Punho do Sql:

corda do hSql: corda dos


strStatements:

strIntoList
Punho

do hSql-A dos parmetros que identifica um contexto da conexo base de dados. indicaes do strStatements-The a ser preparadas pela base de dados. lista do strIntoList-The em variveis em que os valores ajustados do resultado de procedimento armazenado (eventualmente) so retornados.

Chamada

da descrio esta funo para preparar as indicaes nos strStatements que criam ou invocam um procedimento armazenado. Se o procedimento armazenado aceita parmetros da entrada, voc pode especific literals, constantes, ou variveis do ligamento (de algum tipo exceto a CORDA LONGA) como argumentos da entrada.
N o t a : Mesmo que voc no possa especific uma varivel LONGA do ligamento da CORDA

como um parmetro da entrada a um procedimento armazenado, h uma exceo: voc pode especific uma varivel do ligamento atribuiu uma corda d e e x a t a m e n t e 255 bytes.

Se os valores dos retornos de procedimento armazenado em parmetros de sada, voc devem fornecer argumentos da sada a fim chamar o procedimento. Entretanto, voc no pode recuperar os valores dos argumentos da sada - SQLRouter/Sybase no suporta o retorno dos valores de parmetros de sada de um procedimento armazenado a sua aplicao de SQLWindows.
N o t a : Voc pode trabalhar em torno deste limitao-restrictionread

a recuperao de

valores de parmetro da sada na pgina 5-35. Em variveis no strIntoList pode ser de qualquer tipo de dados. Separar as variveis alistadas no strIntoList com vrgulas e preceder cada nome varivel com uns dois pontos. Se as fileiras zero dos retornos de procedimento armazenado, as variveis no sustento do strIntoList o que valores tiveram antes da chamada a SybPrepareProc. Se voc sabe o procedimento armazenado no executa alguns indicaes SELETAS, especific o strNul l do valor para o
5Connecting Gupta Objects to Databases

Stored procedures

strIntoList. Para criar ou invocar realmente o procedimento armazenado, voc precisa de executar as declaraes preparadas. Voc pode fazer este explicitamente (chamando SqlExecute), ou implicitamente (por exemplo, chamando SalTblPopulate).

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

Voc no pode misturar chamadas a SybPrepareProc com o SybGetNextResult, nem SybExecuteProc ou SybExecuteProcEx com o SybPrepareNextResults, no mesmo ciclo da execuo de um procedimento armazenado. Todas funes restantes (por exemplo, SybGetReturnStatus, SybGetError, e assim por diante) trabalham com qualquer um se ajustaram das funes. Como com SybExecuteProc e SybExecuteProcEx, voc no limitado especificao nas indicaes dos strStatements que criam ou invocam um procedimento Return Value armazenado; voc pode especific todas as indicaes de SQL vlidas nos strStatements. Notes o bOk est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. Example Se voc no espera o procedimento armazenado retornar jogos do resultado, chamar SqlPrepare em vez de SybPrepareProc. Esta funo demonstrada na aplicao de amostra
SQLSYBS3. APP.

lts de SybPrepare NextResu


Preparar a indicao SELETA seguinte em um procedimento armazenado. sults do bOk=SybPrepareNextRe da sintaxe (hSql, strIntoList, bEndOfResults)
Punho do Sql: corda do hSql: strIntoList Carne sem gordura da vaia: bEndOfResults

Punho do hSql-A dos parmetros que identifica um contexto da conexo Description base de dados. lista do strIntoList-The em variveis em que os valores ajustados do resultado de procedimento armazenado (eventualmente) so retornados. A bEndOfResults-bEndOfResultsFlag que indica se no h no mais resultado ajusta-se. Return Value Esta funo prepara a indicao SELETA seguinte no procedimento armazenado; voc deve ento chamar SqlExecute com o mesmo punho que do SQL voc especific em SybPrepareNextResults para recuperar realmente o jogo do resultado. Todos em tipos Example de dados variveis so suportados. Separar as variveis alistadas no strIntoList com vrgulas e preceder cada nome varivel com uns dois pontos. Se as fileiras zero dos retornos de procedimento armazenado, as variveis no sustento do strIntoList o que valores tiveram antes da
5Connecting Gupta Objects to Databases

Stored procedures

chamada a SybPrepareNextResults. o bOK RECTIFICAR se a funo sucede e a FALSO se falha. Esta funo demonstrada na aplicao de amostra
SQLSYBS3. APP.

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

Recuperando valores de parmetro da sada


Normalmente, quando voc executa um procedimento armazenado que retorne valores em parmetros de sada chamando SybPrepareProc seguido por SqlExecute, voc no pode recuperar aqueles valores da sada, mesmo que voc especific variveis do ligamento como parmetros de sada quando voc chama o procedimento armazenado. A nica maneira que uma aplicao de SQLWindows pode recuperar dados de um procedimento armazenada nos jogos do resultado (eventualmente) que os retornos de procedimento armazenado. Voc pode trabalhar em torno desta limitao executando o procedimento armazenado dentro de um grupo de indicaes. O grupo de indicaes recupera o parmetro de sada do procedimento armazenado como um "resultado se ajustou", a seguir dos retornos que o "resultado ajustou" a sua aplicao de SQLWindows. Por exemplo: Chamada SybPrepareProc (hSql, o `declara o `do int do @outparm || `do exec GTIPROC_BASICS do ` || `o mais @test do `= o 1 || @result do `= `da sada do @outparm || @outparm SELETO do `') Est aqui um exemplo mais completo para ilustrar a chamada de um procedimento armazenado e a recuperao de um parmetro de sada. Em resumo, porque o procedimento armazenado criado abaixo, voc chama:
SybPrepareProc (como mostrado acima). SqlExecute posio (o jogo aos apelidos ajustados primeiro "resultado" dos

autores').
SqlFetchNext para recuperar as fileiras no primeiro jogo do resultado. SybPrepareNextResults, SqlExecute, e SqlFetchNext para come o

"resultado ajustado" da indicao SELETA de encontro ao foo do `da tabela'.


SybPrepareNextResults, SqlExecute, e SqlFetchNext para recuperar o valor

do outparm-outparmthis so o ltimo jogo do resultado gerado como parte do grupo de comando fora do procedimento armazenado.
Ajustar o strSqlCreate = o `CRIAM o `de PROC GTIPROC_BASICS | | `o int o mais @test, `da sada do int do @result | |
5Connecting Gupta Objects to Databases

Stored procedures

`COMO o au_lname SELETO do `dos autores | | `C1 SELETO do foo onde c1 = o mais @test o ` | | @result SELETO do `= mais @test * 10 ` || Sucesso do RETORNO -100/* do `* `

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

Se VERDADEIRO Quando SqlError Do retorno RECTIFICAR Chamar a chamada SqlPrepareAndExecute de SqlPrepareAndExecute (hSql, `do procedimento GTIPROC_BASICS da gota do `) (hSql, o strSqlCreate) Ajustar o strSqlExecute = o `declaram o `do int do @outparm | | `do exec GTIPROC_BASICS do ` | | `o mais @test =: o mais nTest o ` | | @result do `= `da sada do @outparm | | `SELETO do @outparm do ` = 2 os mais nTest ajustados Chamada SybPrepareProc (hSql, strSqlExecute, `: `do dfAu_lname) Chamada SqlExecute (hSql) Quando NO nFetchInd Chamada SqlFetchNext (hSql, nFetchInd) Chamada SybPrepareNextResults (hSql, `: `, bMoreResults do dfFoo) Chamada SqlExecute (hSql) Ajustar o nFetchInd = FALSO Quando NO nFetchInd Chamada SqlFetchNext (hSql, nFetchInd) Chamada SybPrepareNextResults (hSql, `: `do dfOutParm, chamada SqlExecute dos bMoreResults) (hSql) Ajustar o nFetchInd = FALSO Quando NO nFetchInd Chamada SqlFetchNext (hSql, nFetchInd)

Transaes, disconexes, e sadas


Se o autocommit est fora em sua aplicao, voc responsvel para
5Connecting Gupta Objects to Databases

Writing and retrieving IMAGE and TEXT data

explicitamente cometer ou rolar transaes traseiras. Se o autocommit est, e voc disconexo da base de dados ou retira a aplicao (normalmente ou anormalmente) sem cometer ou rolar para trs uma transao pendente, a base de dados rola para trs a transao para voc.

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

Redigindo e recuperando dados da IMAGEM e do TEXTO


Esta seo diz-lhe como recuperar e redigir dados da IMAGEM e do TEXTO a uma base de dados de Sybase.

Para recuperar dados que da IMAGEM ou do TEXTO voc no pretende actualizar


Definir um cursor normal do SQL para buscar os dados. (Enrolar para trs e envia no jogo do resultado, gira sobre modalidade ajustada do resultado.)

Para recuperar os dados da IMAGEM ou do TEXTO que voc quer actualizar


1.Come um punho do SQL (por exemplo, hSql1). 2.Desligar modalidade ajustada do resultado (que especific o punho hSql1). Para preservar o contexto do cursor, girar sobre o CCP antes de desligar modalidade ajustada do resultado. 3.Executar um SELETO... PARA a indicao LONGA da ACTUALIZAO, especific hSql1. (PARA a clusula LONGA da ACTUALIZAO uma extenso ao SQL que SQLWindows usa para Sybase somente.) 4.Posicionar fileira que voc deseja actualizar.

Dados da escrita
Para redigir dados da IMAGEM ou do TEXTO at de 64K, voc pode usar as indicaes de SQL da INSERO ou da ACTUALIZAO, mas voc deve ento fornecer os dados como um literal ou uma constante. Voc pode redigir dados da IMAGEM ou do TEXTO de todo o tamanho using o texto de SybWrite da funo; atribuir os dados a uma varivel e passar essa varivel como um argumento ao texto de SybWrite.
N o t a : Se voc tenta executar uma indicao da INSERO ou da ACTUALIZAO using

variveis do ligamento em uma coluna da IMAGEM ou do TEXTO, a transao atual estar rolada para trs e voc ser apresentado com a mensagem de erro retornada pelo usurio de base de dados. Isto porque Sybase no suporta parmetros dinmicos para dados do TEXTO e de IMAGEM.

Para actualizar dados da IMAGEM ou do TEXTO em uma fileira existente


1. Recuperar um jogo do resultado com a fileira que voc deseja actualizar, como detalhado nas etapas 1-4 acima.
5Connecting Gupta Objects to Databases

Writing and retrieving IMAGE and TEXT data

2. 3.

Come um outro punho do SQL (por exemplo, hSql2). Chamar SybWriteText (using hSql2) para actualizar a fileira.

Para introduzir dados da IMAGEM ou do TEXTO


1. 1. Come um punho do SQL (por exemplo, hSql1).

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

2.

Introduzir um valor dummy (tal como um espao) na coluna do alvo preparando e executando a indicao da INSERO do SQL e especific o punho hSql1. 3. Cometer a operao de insero (se o autocommit est) que especific o punho hSql1.

4.

Desligar modalidade ajustada do resultado (que especific o punho hSql1). Para preservar o contexto do cursor, girar sobre o CCP antes de desligar modalidade ajustada do resultado. Executar um SELETO... PARA a indicao LONGA da ACTUALIZAO, especific hSql1. (PARA a clusula LONGA da ACTUALIZAO uma extenso ao SQL que SQLWindows usa para Sybase somente.) 6. 7. 8. Posicionar fileira desejada. Come um outro punho do SQL (por exemplo, hSql2). Chamar SybWriteText (using hSql2) para actualizar a fileira.

5.

Para suprimir de dados da IMAGEM ou do TEXTO


1.Girar sobre modalidade ajustada do resultado. 2.Executar um SELETO... PARA a indicao da ACTUALIZAO. 3.Posicionar fileira desejada. 4.Executar a indicao da SUPRESSO. Ao chamar o texto de SybWrite, voc pode escolher mesmo se registrar a actualizao da IMAGEM ou a coluna do TEXTO ajustando o argumento bLogging a esta funo apropriado-appropriatelyif bLogging FALSO, o usurio de base de dados no registrar a actualizao. Anotar que voc deve permitir a o p o do sp_dboption (selecionar em/bulkcopy) no usurio de base de dados de executar operaes sem registrar.

Recuperando dados e tamanho de amortecedor


SQLRouter/Sybase pode recuperar a IMAGEM ou os valores do TEXTO de todo o comprimento (dado bastante memria em sua mquina de cliente para armazenar o valor) forneceram a quantidade de dados da IMAGEM ou do TEXTO no excedem o tamanho que de amortecedor voc especific com o f e do longbuf a palavra-chave de r no SQL.INI lima-file see o longbuffer na pgina 5-21. SQLRouter/Sybase detecta valores da IMAGEM e do TEXTO durante a execuo e aloca seu amortecedor do esforo para a coluna de acordo com o tamanho especific para a palavra-chave do fe r do longbuf. Se h uma insuficiente memria para este amortecedor do
5Connecting Gupta Objects to Databases

Writing and retrieving IMAGE and TEXT data

esforo, voc come o erro:


Limite do espao de trabalho excedido.

Voc precisa de especific um valor para a palavra-chave do fe r do longbuf que grande bastante prender o valor que o maior voc espera recuperar. Se a quantidade de dados longos recuperados demasiado grande caber no amortecedor, SQLRouter/Sybase trunca os dados adicionais mais por muito tempo

Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

sem aviso. Se voc usa o valor binrio truncado (por exemplo, um bitmap truncado) em sua aplicao, voc come provavelmente um erro runtime. A biblioteca do cliente acolchoa valores retornados da coluna de VARCHAR com espaos de arrasto at o comprimento da coluna. SQLRouter/Sybase descasca espaos de arrasto para valores retornados de VARCHAR.
N o t a : ainda possvel encontrar espaos de arrasto para valores de VARCHAR se o valor

prprio da fileira era introduzido ou actualizado com espaos de arrasto. SQLRouter/Sybase descasca somente aqueles espaos que se encontram alm do comprimento armazenado real. Conseqentemente, S a l S t r L e n g t h indica o comprimento verdadeiro do valor de dados armazenado na base de dados.

SybWriteText
Executar uma actualizao posicionada de mais de 31.997 bytes de dados de IMAGEM ou de mais de 64.000 bytes de dados do TEXTO em uma base de dados de Sybase.
Sintaxe

bOk=SybWriteText (hSql, strCursorName, nColumnNum, nColumnName, strUpdateValue, bTimeStamp, bLogging)


Punho do Sql: hSql Corda: nmero do strCursorName:

corda do
nColumnNum: corda do strColumnName:

carne sem gordura da


Parmetros

vaia do valor do
strUpdate:

bTimeStamp
booleano: bLogging

punho do hSql-A que identifica um contexto da conexo base de dados. O strCursorName-strCursorNameName do cursor associou com o punho do SQL em que voc executou a indicao SELETA que recuperou a fileira para ser actualizado. Posio nColumnNum-nColumnNumOrdinal na indicao SELETA da coluna a ser actualizado. nome strColumnName-Fully qualificado da coluna a ser actualizado. Valor-ValueValue da data do strUp a ser escrito coluna.
5Connecting Gupta Objects to Databases

Writing and retrieving IMAGE and TEXT data

Notes

Description Return Value Example

Esta funo executa uma actualizao posicionada em dados da IMAGEM ou do TEXTO na coluna nomeada no strColumnName. O nome no strColumnName deve ser inteiramente - o nome qualificado de uma coluna em uma tabela real, no uma vista. Voc executa primeiramente um SELETO... PARA QUE a indicao LONGA da ACTUALIZAO recupere as fileiras e as colunas do interesse da tabela. Voc chama ento SqlFetchNext para buscar fileiras, e SybWriteText para actualizar o strColumnName da coluna na fileira atual. Voc pode SELECIONAR e actualizar todo o nmero de colunas. O valor no nColumnNum a posio ordinal da coluna alistada no SELETO... PARA a indicao LONGA da ACTUALIZAO. Voc varia este nmero com cada chamada a SybWriteText para actualizar mais de uma coluna na fileira atual antes de buscar a fileira seguinte. O punho que do SQL voc passa enquanto um argumento a SybWriteText deve ser diferente do punho do SQL usado para executar o SELETO... PARA a indicao da ACTUALIZAO. Esta funo supor que a coluna a ser actualizado no ZERO, ou est ajustada PARA ANULAR using a indicao da ACTUALIZAO (no a indicao da INSERO). Para ajustar uma coluna do TEXTO ou da IMAGEM PARA ANULAR, executar uma indicao da ACTUALIZAO; no chamar o texto de SybWrite. Voc deve incapacitar modalidade ajustada do resultado antes da chamada SybWriteText porque esta funo faz uma actualizao posicionada. o bOk est ajustado PARA RECTIFICAR se a funo sucede e a FALSO se falha. Este exemplo ilustra as operaes tpicas que so executadas ao chamar esta funo. ! Abrir ambos os
cursores. Chamar a chamada SqlConnect de SqlConnect (hSql1) (hSql2) ! Os jogos do resultado devem estar para udpates posicionados. Chamada SqlSetResultSet (hSql1, FALSOS) ! Supr uma tabela do bmptbl e uma coluna bitmap. Ajustar o bitmap SELETO do strSQLstmt = do `do bmptbl PARA chamada SqlPrepare da ACTUALIZAO LONGA' (hSql1, o strSQLstmt) Chamar SqlOpen (hSql1, `CURSOR1') Lao Se no ruptura de SqlFetchNext (hSql1, nRetVal)
Connecting Gupta Objects to Databases

7-

Chapter 5

Connecting to Sybase

! Supr que o strNewBitMap tem os dados novos para actualizar. Chamar SybWriteText (hSql2, `CURSOR1', 1, `bmptbl.bitmap', strNewBitMap, o bTimeStamp, bLogging)

5-

Connecting Gupta Objects to Databases

Captulo 5 que conecta a Sybase

Connecting Gupta Objects to Databases

7-

Captulo 6

Conexo s bases de dados using ODBC


Este captulo descreve como conectar aplicaes de SQLWindows s bases de dados using ODBC. Igualmente descreve o trao de cdigos de erro entre SQLWindows e ODBC.

Antes de voc comear


Ler por favor todo o captulo 1, vista geral e captulo 2, inicializando e testando sua conexo antes de ler este captulo. Voc conecta aplicaes de SQLWindows s origens de dados com o router de Gupta ODBC, SQLRouter/ODBC de ODBC. Este router conforma-se especificao de ODBC 3.0 at os nveis 1 e 2 do ncleo (isto , ao nvel de ODBC 2.0 dentro da especificao 3.0).

Conexo s origens de dados especficas


Uma aplicao de SQLWindows pode alcanar uma variedade de origens de dados de ODBC, incluindo: IBM DB2/400 Verso 6.x do usurio de Microsoft SQL Microsoft Access ORACLE Sybase que conecta ao acesso na pgina 6-2. Em todos casos restantes, ser certo ler a documentao que
N o t a : Se voc estar conectando a uma origem de dados DB2/4700, ser certo ler a seo

vem com seu excitador de ODBC.

Sua aplicao de SQLWindows comunica-se com o SQLRouter/ODBC (fornecido com seu software de Gupta); o router fala ao gerente do excitador de Microsoft ODBC (fornecido com Windows); o gerente do excitador fala ao excitador de ODBC (fornecido por um vendedor da terceira); finalmente, o excitador de ODBC fala base de dados do alvo. Os excitadores de ODBC dos vrios vendedores esto disponveis que trabalho com SQLRouter/ODBC para permitir que voc conecte suas aplicaes de SQLWindows a uma origem de dados dada using ODBC. Voc precisa de instalar e configurar um excitador de ODBC que seja escrito ao trabalho com a base de dados que voc quer se usar. O excitador de ODBC deve igualmente ter sido certificado para trabalhar com aplicaes de SQLWindows pelo vendedor para esse excitador.
I m p o r t a n t e : Alm do que o captulo

2 da leitura, inicializando e testando sua conexo,

voc deve ler a documentao que vem com seu excitador de ODBC encontrar o que voc precisa de saber para conectar a sua base de dados do alvo using esse excitador. A documentao do excitador deve igualmente descrever todas as limitaes ou caractersticas especiais desse excitador.

Connecting Gupta Objects to Databases

7-

Chapter 6

Connecting to Databases using OD BC

Conexo ao acesso
O excitador do acesso ODBC que ns certificamos no suporta nveis da isolao.

6-

Connecting Gupta Objects to Databases

Informao do tipo

Conexo a DB2/400
Suas aplicaes de SQLWindows conectam a DB2/400 apenas como a toda a outra origem de dados. Entretanto, voc precisa de verific com cuidado a documentao que vem com o excitador de StarSQL ODBC de StarWare, Inc. considerar que tipo da sustentao e limitaes vir com seu excitador DB2/400. Os tpicos que voc deve verific incluem o autocommit, a preservao do contexto do cursor, os nveis da isolao, procedimentos armazenados, e processamento de transao. Quando voc actualiza limas lgicas, voc deve usar o giro. Se no, voc deve actualizar using limas fsicas. Neste captulo ver igualmente a preservao do contexto do cursor na pgina 6-4, procedimentos armazenados na pgina 6-15, e transaes, disconexes, e sadas na pgina 6-15. Para a informao de fundo nestes tpicos, ler Autocommit na preservao da pgina 1-3, do contexto do cursor na pgina 1-7, nos nveis da isolao na pgina 1-12, em procedimentos armazenados na pgina 1-21, e em transaes na pgina 1-22.

Sobre o excitador de ODBC para SQLBase


Seu sistema de desenvolvimento de Gupta inclui um excitador de ODBC para a base de dados de SQLBase. Com este excitador voc pode proteger seu investimento atual em aplicaes ODBC-ODBC-enabled (tais como Microsoft Excel ou aplicaes ODBCODBC-enabled de Visual Basic) - voc migra seus dados como necessrios a SQLBase e continua a funcionar aquelas mesmas aplicaes. Voc pode igualmente usar este mesmo excitador de ODBC (conjuntamente com SQLHost de Gupta para o produto DB/2) para alcanar dados na base de dados de DB2/MVS de IBM de toda a aplicao ODBC-ODBC-enabled.
N o t a : Suas aplicaes de SQLWindows podem alcanar uma base de dados de SQLBase

aproximadamente da mesma maneira que alcanam toda a outra base de dados. Entretanto, voc no pode usar o excitador de SQLBase ODBC para alcanar SQLBase-SQLBaseread a documentao de SQLBase para aprender como conectar uma aplicao de SQLWindows a SQLBase.

Informao do tipo
Se sua aplicao de SQLWindows precisa de identificar o tipo de usurio que de base de dados est conectado a, voc chama SqlGetParameter (hSql, DBP_BRAND, nBrand, strNull) para recuperar o tipo no nBrand do parmetro. Entretanto, se voc conectado a uma origem de dados de ODBC (que seja igualmente o caso quando voc conecta a Microsoft SQL o usurio 6.x), o valor retornado no nBrand sempre 31 (que denota "ODBC ").
Connecting Gupta Objects to Databases

7-

Chapter 6

Connecting to Databases using OD BC

Se sua aplicao come o valor 31 no nBrand, voc precisa de fazer ligaes de controle adicionais para come uma informao mais especfica. Voc usa estas funes para encontrar o nome de

6-

Connecting Gupta Objects to Databases

a base de dados e excitador de ODBC, assim como o nmero de verso do excitador de ODBC. Estas ligaes de controle so: SqlGetParameterAll (hSql, DBP_DRIVER_NAME, nNum, strDriverName) SqlGetParameterAll (hSql, DBP_DRIVER_VER, nNum, strDriverVersion) SqlGetParameterAll (hSql, DBP_DBMS_NAME, nNum, strDBMSName) Para come as definies das constantes DBP_DRIVER_NAME, DBP_DRIVER_VER, e DBP_DBMS_NAME, incluem a lima SQLNWKCN.APL (situado em seu diretrio de instalao de Gupta) em sua aplicao selecionando b i b l i o t e c a s , l i m a i n c l u e m da barra de menu de SQLWindows.

Preservao do contexto do cursor


Quando uma aplicao de SQLWindows conectar a uma origem de dados de ODBC, o estado de defeito de contexto do cursor (CCP) preservao-preservationwhether est ligada ou fora-offis uma funo da base de dados a que voc conecta. Se voc tenta girar o CCP de ligar/desligar em sua aplicao, SQLRouter/ODBC passa este pedido sobre ao excitador de ODBC. Para que este pedido seja honrado, o excitador de ODBC e a origem de dados devem suportar o ajuste do CCP no tempo de execuo. Ler a documentao fornecida com seu excitador de ODBC e sua base de dados para mais informao.
I m p o r t a n t e : Ao conectar a uma origem de dados DB2/400 using o excitador de StarSQL

ODBC de StarWare, sua aplicao no pode mudar o ajuste para o CCP. Desde que o CCP est revelia em SQLWindows, este significa que o CCP est sempre fora de quando voc conecta a DB2/400 using StarSQL.

Se o CCP est ligada, voc pode continuar a executar indicaes que de SQL voc se tem preparado j mesmo depois que voc comete as operaes voc executou. Se o CCP est e voc executa uma CONSIGNAO, voc deve re-re-prepare aquelas indicaes de SQL se voc quer as executar. Se o CCP de ligar/desligar, voc deve igualmente re-prepar-los se voc executa um ROLLBACK. Para mais informao de fundo no CCP, ler a preservao c u r s o r d a s e o na pgina 1 - 7 .
do contexto do

Tipos de dados
Mapas de SQLRouter/ODBC entre os quatro tipos de dados suportados em aplicaes de SQLWindows e os tipos de dados do SQL definidos pela especificao de ODBC. O trao suporta todos os tipos de dados de ODBC SQL (mnimo, ncleo, e estendido) exceto SQL_BINARY e SQL_VARBINARY.
Connecting Gupta Objects to Databases

7-

Chapter 6

Connecting to Databases using OD BC Processamento do erro

Tipo da data que traa entre G u p t a SQLWindows e ODBC G u p t a SQLWindows ODBC

CORDA

SQL_CHAR SQL_VARCHAR SQL_TIMESTAMP SQL_LONGVARCHAR SQL_LONGVARBINARY SQL_DECIMAL SQL_NUMERIC SQL_SMALLINT SQL_INTEGER SQL_REAL SQL_FLOAT SQL_DOUBLE SQL_BIT SQL_TINYINT SQL_BIGINT SQL_DATE SQL_TIME

CORDA LONGA NMERO

DATE/TIME

I m p o r t a n t e : Para aprender que tipos de dados so suportados pela origem de dados que voc

est conectando a usar seu excitador de ODBC, ler a documentao que vem com o excitador de ODBC.

Processamento do erro
SQLWindows tem trs funes padro aos erros process.
SqlGetError-SqlGetErrorreturns

uma mensagem de erro.

Se o nmero de erro menos de 20.000, o ERRO da lima. O SQL procurarado pelo texto do erro e esse texto (se encontrado) retornado; se no, o nmero de erro e a mensagem de erro traduzidos da base de dados do usurio de base de dados so retornados somente o ERRO. SQL para a razo e o remdio do texto do erro.
SqlErrorText-SqlErrorTextsearches

Se h uma razo e um remdio para o nmero de erro dado no ERRO. O SQL, a razo e o remdio so retornados; se no, a corda "mensagem no encontrada" retornada.
6Connecting Gupta Objects to Databases

SqlGetErrorText-SqlGetErrorTextreturns

uma mensagem de erro. Se o texto para o nmero de erro dado encontrado no ERRO. O SQL, esse texto retornado; se no, a mensagem de erro da base de dados retornada.

Connecting Gupta Objects to Databases

7-

Quando uma mensagem de erro indicada, tem o formato: <native_error> [<vendor>] [ODBC_component] [data_source] <error_text> por exemplo:
Usurio de Microsoft SQL: 208 [Microsoft] [excitador] do usurio de ODBC SQL [usurio do SQL] nome de objeto invlido' tyu'.

Os componentes sintticos deste exemplo so: erro nativo vendedor Origem de dados do componente de ODBC texto do erro Usurio de Microsoft SQL: 208 Microsoft Usurio do SQL do excitador do usurio de ODBC SQL tyu invlido do `do nome de objeto'.

Trao do cdigo de

Esta seo alista o trao entre nmeros decimais alfanumricos de cdigos de erro de ODBC e de erro de SQLWindows. As entradas de ODBC so alistadas em aumentar a ordem lexicographic (dgitos que precedem letras do alfabeto).
C d ig o de erro de ODBC

Nmero de erro de Gupta SQL Windows

01000 01002 01004 01006 01S00 01S01 01S02 01S03 01S04 07001 07006 08001 08002

20087 20010 20011 20012 20013 20090 20091 20092 20093 20014 20015 20016 20017

Error code mapping

Cdi go de erro de ODBC

Nmero d e e r r o de Gupta SQL


Windows

08003 08004 08007 08S01 21S01 21S02 22001 22003 22005 22008 22012 22026 23000 24000 25000 28000 34000 37000 3C000 40001 42000 70100 IM001 IM002

20018 20019 20020 20021 20022 20023 20024 20025 20026 20027 20028 20029 20030 20031 20032 20033 20034 20035 20036 20037 20038 20039 20040 20041

Connecting Gupta Objects to Databases

7-

Chapter 6

Connecting to Databases using OD BC

C d ig o de erro de ODBC

Nmero de erro de Gupta SQL Windows

IM003 IM004 IM005 IM006 IM007 IM008 IM009 IM010 IM011 IM012 IM013 S0001 S0002 S0011 S0012 S0021 S0022 S0023 S1000 S1001 S1002 S1003 S1004 S1008

20042 20043 20044 20045 20046 20047 20048 20103 20104 20105 20106 20049 20050 20051 20052 20053 20054 20107 20055 20056 20057 20058 20059 20060

6-

Connecting Gupta Objects to Databases

Error code mapping

Cdi go de erro de ODBC

Nmero d e e r r o de Gupta SQL


Windows

S1009 S1010 S1011 S1012 S1015 S1090 S1091 S1092 S1093 S1094 S1095 S1096 S1097 S1098 S1099 S1100 S1101 S1102 S1103 S1104 S1105 S1106 S1107 S1108

20061 20062 20108 20063 20064 20065 20066 20067 20068 20069 20070 20071 20072 20073 20074 20075 20076 20077 20078 20111 20112 20079 20080 20081

Connecting Gupta Objects to Databases

7-

C d ig o de erro de ODBC

Nmero de erro de Gupta SQL Windows

S1109 S1110 S1111 S1C00 S1DE0 S1T00

20082 20083 20113 20084 20085 20086

Travar o intervalo de parada


Voc pode estabelecer um intervalo de parada do fechamento em sua aplicao de SQLWindows ao conectar a uma base de dados using ODB C, contanto que ambo o excitador que de ODBC voc se est usando e o base de dados voc est conectando sustentao que ajusta um intervalo de parada do fechamento de uma aplicao de cliente. Ler a documentao do vendedor para seu excitador e sua base de dados para mais informao.

Palavras-chaves de SQL.INI
Esta seo contem as palavras-chaves que voc precisa ou pode querer se usar na lima de SQL.INI ao conectar uma aplicao de SQLWindows a uma base de dados using ODBC. Para mais informao sobre a lima de SQL.INI, ler aplicaes de inicializao de SQLWindows na pgina 2-5.

buffrow

Usar esta palavra-chave para controlar a proteco dos dados entre seus aplicao de SQLWindows e SQLRouter/ODBC.
[odbcrtr]

Defeito da seo Descrio da sintaxe

0
l u s t r a r row=number_of_rows

Esta palavra-chave controla a proteco dos dados entre seus aplicao de SQLWindows e SQLRouter/ODBC. Diminuindo o v a l o r do buffrow, o tempo de resposta pode ser melhorado significativamente. Ao contrrio, os valores maiores aumentam a produo de dados, mas alongam o tempo de resposta.

SQL.INI keywords

Os valores para o buffrow podem variar de 0 a 32767. Atribuir um valor no garante que o INMESSAGE atual do suficiente tamanho para cumprir o pedido. Nestes casos, o nmero de fileiras protegidas pode ser consideravelmente menos. O valor de defeito de zero faz com que SQLRouter/ODBC reverta aos dados da proteco baseados no nmero de fileiras que cabero dentro do tamanho de amortecedor atual de INMESSAGE. Esta indicao instrui SQLRouter/ODBC para executar nicos esforos da fileira no amortecedor de INMESSAGE:
row=1 amarelo

Exemplo

Notas

A palavra-chave amarela da fileira no tem nenhum efeito

na maneira em que os dados so protegidos e transportados atravs da rede. Voc pode igualmente configurar a proteco dos dados para os punhos individuais do SQL using a funo do rAll de SqlSetParamete. Fileira presumida do nBuf f tem sido atribuda j o valor desejado para o hSql do punho
SqlSetParameterAll (hSql, DBP_BUFFROW, nBuffRow, FALSO, VERDADEIRO)

comdll
Identificar o SQLRouters disponvel entre SQLWindows (ou uma aplicao de cliente criada com o SQLWindows) e a base de dados. Secionar [win32client.dll] L=communication_dll_name do comdl da sintaxe A descrio esta palavra-chave identifica o nome de arquivo de um DLL de SQLRouter. Voc pode pr mais de um comdl l indicao na lima de SQL.INI. O valor do communication_dll_name a usar-se para SQLRouter/ODBC sqlodb32. As notas para informao relacionada, lidas conectam a ordem da busca na pgina 1-6. Exemplo comdll=sqlodb32

enablemultipleconnections
Usar esta palavra-chave para forar a criao de uma conexo nova base de dados para cada chamada a SqlConnect. Secionar o Descrio da sintaxe
[odbcgtwy]

defeito fora de
enablemultipleconnections= {em|fora de}

Se esta palavra-chave ajustada a "ON", voc come uma conexo nova base de dados cada vez que voc chama SqlConnect, mesmo se o argumento do punho do SQL a SqlConnect est associado com
Connecting Gupta Objects to Databases

7-

Example

Chapter 6

Connecting to Databases using OD BC

o mesmo usurio - identificao, senha, e nome de base de dados como um do SQL j conectado segura. Se esta palavra-chave est ajustada a "OFF", e voc j chamou S q l C o n n e c t pelo menos uma vez, voc pode ou no pode come uma conexo nova base de dados quando voc chama S q l C o n n e c t outra vez. Voc no come uma conexo nova se o argumento do punho do SQL na chamada associado com o mesmo usurio - identificao, senha, e nome de base de dados como um do SQL j conectado segura; se no, voc come uma conexo nova.
O exemplo

este exemplo fora a criao de uma conexo nova base de dados para cada
SqlConnect.

chamada a

log
S e c tDefinir ion

enablemultipleconnections=on

o registro de atividade do router da base de dados e permitir o registo.

Syntax Description

[win32client. odb32] ified_path_name ly_qual log=ful

Especific todo o pathname vlido da lima aps a palavra-chave. Se a lima no existe, est criada. Se a lima j existe, overwritten (a menos que a opo de /Fa especific - vem abaixo). Uma vez que a indicao do registro foi adicionada lima de SQL.INI, registrar est executado automaticamente. Voc pode especific umas ou vrias das opes alistadas abaixo aps inteiramente - o pathname qualificado para personalizar a sada:
/Bx - excluir valores variveis do ligamento /F um-aappend a lima existente /FD - dados do esforo da exposio /Ld - dados LONGOS da exposio lidos ou redigidos /Tx - excluir timestamps

Incorporar as opes exatamente como mostrado, mantendo letras de caixa as letras caixas e lower-case lower-case. Este exemplo chama para uma lima de registro que no inclua timestamps em entradas (para conservar o espao de disco), e exposies a entrada e a sada de todos os dados LONGOS (artigos de dados including de TEXTO e de IMAGEM).
[win32client. odb32] log= c:\gupta\odbc.log /Tx /Ld
6Connecting Gupta Objects to Databases

SQL.INI keywords

amortecedor longo
Especific o nmero de bytes mximo de dados LONGOS da coluna para recuperar ou emitir.

Connecting Gupta Objects to Databases

7-

od bctrace

Example

Chapter 6

Connecting to Databases using OD BC

[odbcrtr]

32 Kbytes. Ajustar um valor menos do que o defeito far com que o valor seja Sections Default restaurado ao defeito. Section Default
r=number_of_bytes do longbu f f e

tax Description Syntax Description Esta palavra-chave ajusta o tamanho do amortecedor que prende dados LONGOS. O tamanho mximo limitado somente por confinamentes do sistema de explorao. Normalmente, o tamanho ptimo que evita a perda dos dados a coluna a maior dos dados LONGOS a ser emitidos ou recuperado pela aplicao de SQLWindows. Um amortecedor maior usa mais memria e aumenta o trfego de rede; um amortecedor menor usa menos memria e reduz o trfego de rede. Entretanto, se o amortecedor demasiado pequeno prender todos os dados, o excesso truncado. Se especific, a indicao do fe r do longbuf aplica-se a todas as bases de dados conectadas a usar ODB C.. Recomendase que voc no especific um valor para o longbuf fer maior do que o tamanho LONGO mximo da coluna em algumas das tabelas armazenadas em algumas daquelas bases de dados. Esta indicao ajusta a 64K o nmero de bytes mximo dos dados LONGOS da coluna a recuperar de ou emitir a toda a base de dados conectada a usar ODBC. Notes
longbuffer=65536

Voc pode igualmente ajustar esta varivel em um programa de SQLWindows chamando o rA ll d e S q lS e tP a ra me te com o parmetro de DBP_LONGBUFFER (definido em SQLNWKCN. APL). Isto permite que voc costure o tamanho do amortecedor aplicao. Seguir todas as chamadas ao ODBC API. [odbcrtr] fora de
odbctrace= {em|d e f }

O gerente do excitador de ODBC pode seguir todas as chamadas feitas ao ODBC API. A informao do trao conservada na lima de registro cujo o pathname dado na indicao da lima da raa do odbt. Esta indicao permite o traado de chamada de ODBC API.
odbctrace=on

odbctracefile
Especific o pathname da lima de trao para chamadas de ODBC
6Connecting Gupta Objects to Databases

SQL.INI keywords

API. Secionar [odbcrtr]

Connecting Gupta Objects to Databases

7-

Example Examples:

Chapter 6

Connecting to Databases using OD BC

client_root_directory \ sql. registro


ile=fully_qualified_filename do odbctracef

Default Syntax Description Esta palavra-chave especific o pathname da lima de trao para chamadas de ODBC API. Esta palavra-chave no tem nenhum efeito a menos que a palavra-chave do odbtrace for ajustada a "em" - considera o odbctrace na pgina 613. Esta indicao especific que a lima de trao est chamada odbc. o registro, e aquele que ficado situado no \ registra o diretrio no c d o c l i e n t e : m o v i m e n t a o .
odbctracefile=c: \ registros \ odbc. registro

r e mo te d b na me
Usar esta palavra-chave para especific nomes de base de dados e seus associados conectam cordas.
[odbcrtr] =db_name remoto do dbname, connect_string

Section Syntax Description

o db_name especific o nome de base de dados; no pode exceder oito carteres. connect_string o exato conecta a corda que voc se usar para conectar origem de dados de ODBC. Tipicamente, esta entrada comea com a corda "DSN=" a especific o nome da origem de dados especific na ferramenta do administrador de ODBC. O valor especific em connect_string pode incluir espaos encaixados. No pr comentrios sobre a mesma linha com a indicao do "remotedbname". Tudo do db_name de seguimento da vrgula extremidade de linha interpretado como a corda da conexo. Supr que voc definiu duas origens de dados no administrador de ODBC. Um para Microsoft SqlServer 7.0 (com um nome da origem de dados de "MS SqlServer 7.0"), e o outro para uma base de dados visual de FoxPro (com um nome da origem de dados "do DB visual de FoxPro"). As indicaes do remotedbname olham o gosto:
remotedbname=SS70, remotedbname=VFP de DSN=MS SqlServer 7.0, DB de DSN=Visual FoxPro

Sua aplicao de Gupta ajusta o "SqlDatabase varivel" a "SS70" (para conectar origem de dados de SqlServer) ou a "VFP" (para conectar base de dados de FoxPro), ajustou SqlUser e SqlPassword apropriadamente, e emitiu a chamada de SqlConnect (). SqlRouter/ODBC obtem toda a informao necessria da configurao mantida pelo utiltity do administrador de ODBC. Nota adicional: O parmetro do remotedbname no necessrio para as aplicaes construdas using o colaborador da equipe de Gupta. Exige-se se
6Connecting Gupta Objects to Databases

voc quer usar a utilidade de SqlTalk para conectar origem de dados de ODBC.

Connecting Gupta Objects to Databases

7-

Procedimentos armazenados

Ao conectar a toda a origem de dados de ODBC onde o nome da origem de dados foi configurado pela ferramenta do administrador de ODBC, sua aplicao de Gupta pode contornear o parmetro do remotedbname completamente, e ajusta o SqlDatabase v a r i v e l ao nome real da origem de dados de ODBC. Using o exemplo acima, se voc emite as seguintes indicaes (supr que SqlUser e SqlPassword esto ajustados):
Ajustar SqlDatabase = do "chamada SqlConnect MS SqlServer 7.0" (o hSql)

ento seu programa de Gupta conectar corretamente origem de dados de Microsoft SqlServer 7.0 sem usar o parmetro do remotedbname em SQL.INI.

Procedimentos armazenados
SQLRouter/ODBC suporta a chamada dos procedimentos armazenados que aceitam argumentos da entrada e retornam jogos do resultado. Entretanto, o router no suporta a obteno de valores de um procedimento armazenado using argumentos da sada. Sintaticamente, voc pode legalmente chamar um procedimento armazenado que tenha parmetros de sada fornecendo as variveis do ligamento onde os argumentos da sada so exigidos; entretanto, o valor daquelas variveis ser indeterminado depois que voc chamou o procedimento armazenado, assim que sero de nenhum uso prtico a voc.
I m p o r t a n t e : Se seu excitador de ODBC no suporta valores de retorno em jogos do resultado,

tais como o excitador de StarSQL ODBC para DB2/400, voc no pode come a informao de um procedimento armazenado em sua aplicao de SQLWindows. Ler sua documentao do excitador de ODBC para encontrar que tipo da sustentao do procedimento armazenado seu excitador fornece, e que limitaes ou limitaes impor.

Para mais informao em procedimentos armazenados ler p r o c e d i m e n t o s no captulo 6..

a r m a ze n a d o s

Transaes, disconexes, e sadas


Se o autocommit est, e suas disconexes ou sadas da aplicao (se normalmente ou anormalmente), SQLRouter/ODBC executa um ROLLBACK de encontro ao transao-transactionthis pendente rola para trs todas as indicaes de lngua pendentes da manipulao de dados (DML), como CRIA, INTRODUZ, e assim por diante. Quando vem s indicaes de lngua da definio (DDL) de dados, como CRIAR A TABELA, algumas bases de dados cometem-nas assim que forem executados, no obstante se o autocommit de ligar/desligar. Para estas bases de dados, as indicaes

de DDL no podem ser roladas para trs junto com as indicaes pendentes de DML. Outras indicaes do deleite DDL das bases de dados apenas como DML indicaono o cometem at que um explcito COMETA for executado. Para estas bases de dados, as indicaes pendentes de DDL so roladas para trs apenas como as indicaes de DML.

Connecting Gupta Objects to Databases

7-

N o t a : No caso de DB2/400 e o excitador de StarSQL de StarWare, todas as indicaes na

transao pendente (indicaes de lngua da manipulao de lngua e de dados de definio de dados) rolado para trs.

Pesquisa de defeitos no linux


Se voc tem a dificuldade conseguir o router de ODBC conectar em plataformas do linux, verific seus ajustes da configurao. Sob o dobrador do tdx/sustentao/dotwine (para as instalaes non-root, .tdx/dotwine da sustentao), verific para ver se h as seguintes entradas abaixo [DllOverrides] n a l i m a dos config: "sqlwntm" = "builtin, nativo" "gptdodbu32" = "builtin, nativo" Para confirmar que os ODBC corretos DLLs esto sendo carregados, voc pode funcionar este comando do escudo aprender se DLLs interno ou nativo est sendo usado: $WINEDEBUG=+loaddll /opt/bin/wine --cbi40 verbose (ou cbi41, dependendo de sua verso do colaborador da equipe.) Despejar mensagens verbose e certific de WINEDLLPATH tenha o presente TD-TD-installed do trajeto, de modo que possa pegarar a s l i m a s de *.dll.so. Voc pode igualmente aprender se

o sqlwntm e as verses gptdodbu32 "internas" de DLLs esto carregados.

Connecting Gupta Objects to Databases

7-

Captulo 7

Conexo ao mltiplo Bases de dados simultaneamente


Este captulo descreve algumas das consideraes que voc precisa de tomar em considerao ao escrever as aplicaes de SQLWindows que alcanam bases de dados mltiplas simultaneamente.

Vista geral
Gupta SQLWindows um ambiente de 32 bits do desenvolvimento de aplicaes do cliente/usurio para Microsoft Windows. Using SQLWindows e outros componentes de Gupta, as equipes dos programadores podem construir o grande, cliente enterprisewide/aplicaes de usurio a que conectar, recuperar dados de, e manipular dados em usurios de base de dados de uma variedade de vendedores. Este captulo descreve uma aplicao de amostra que execute transaes de encontro a trs usurios de base de dados diferentes. Diz-lhe como set up e funcionar a aplicao, descreve algumas das edies de projeto principais, e fornece trechos do cdigo para ilustrar como as partes diferentes da aplicao foram executadas. o captulo 1, a vista geral, para a informao geral sobre o usurio de base de dados e as caractersticas de SQLWindows que afetam como voc escreve suas aplicaes.
I m p o r t a n t e : Ser certo ler

Duas aproximaes
Ao escrever uma aplicao de SQLWindows da multi-base de dados, voc tem duas aproximaes bsicas a escolher de. Uma aproximao (essa usada na aplicao de amostra) tomar a lngua do SAL e as determinadas caractersticas de SQLWindows e criar o cdigo tanta comum como possvel para alcanar as bases de dados diferentes dos vendedores diferentes. Estas caractersticas incluem janelas dinmicas da tabela e variveis automticas da coluna. O descanso da aplicao tem o especfico do cdigo ao usurio de base de dados que est sendo alcanado. Esta aproximao mais fcil de compreender conceptual, d um exemplo padro de uma aplicao da multi-base de dados, e resultados em um cdigo mais compreensvel. A outra aproximao mais objeto-orientar-object-orienteduse classes funcionais de SQLWindows para segurar bases de dados heterogneas de acesso e para maximizar reusar do cdigo. Para a informao nas aplicaes da multi-base de dados da escrita que criam e usam classes funcionais, ler o Livro Branco que projeta aplicaes da Multi-Base de dados com classes de objeto de Gupta. Voc pode alcanar este papel indo ao Home Page das tecnologias de Gupta em:
HTTP: //www. guptaworldwide.com

Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently


Sobre a aplicao

Sobre a aplicao
O BID da aplicao M U L T d a m u l t i - b a s e d e d a d o s . O A P P uma nica aplicao de SQLWindows que um usurio funcione para gerar uma factura para uma ordem do cliente. A aplicao conecta a trs usurios de base de dados diferentes para recuperar, para introduzir, para actualizar, e suprimir da informao de seis relacionou tabelas. A aplicao fornecida igualmente no formulrio de texto no BID
da lima M U L T . A p a r t a m e n t o .

A aplicao

inclui o cdigo isso: Conecta a cada base de dados. Cria tabelas de base de dados. Copia dados de uma base de dados a outra. Controla o ambiente da transao. Controla a simultaneidade. Recupera dados das bases de dados mltiplas. Manipula dados em bases de dados mltiplas. As tabelas so espalhadas atravs de SQLBase 6.1, de usurio 6.0 de Microsoft SQL, e de Oracle7. Voc usa uma conexo local para conectar a SQLBase, ao Gupta SQLRouter/Oracle a conectar (nativa) a Oracle, e ao Gupta SQLRouter/usurio de Microsoft SQL a conectar (nativa) ao usurio de Microsoft SQL.

Esquema e posio das tabelas


A aplicao usa as tabelas COMPANHIA, EMPREGADO, FACTURA, INVOICE_ITEM, PRODUTO, e PAGAMENTO (da base de dados do CONSOLE da amostra fornecida com o SQLBase). A aplicao foi escrita para deix-lo fazer uma outra cpia da tabela da COMPANHIA em SQLBase, e copiar as tabelas da FACTURA, do INVOICE_ITEM, e do PRODUTO de SQLBase a Oracle, e as tabelas do EMPREGADO e do PAGAMENTO de SQLBase ao usurio de Microsoft SQL. A seguinte tabela sumaria a posio original das tabelas na base de dados do CONSOLE de SQLBase, e onde as tabelas residiro (em bold(realce)) depois que voc seleciona a opo do povoamento. As tabelas devem existir no usurio de base de dados correto para que a aplicao funcione com sucesso. Tambm, as tabelas de SQLBase propagadas ao usurio de Microsoft SQL, Oracle, e SQLBase tm seus nomes prefixados com o MDB_ para reduzir a possibilidade de um conflito conhecido com tabelas existentes.

7-

Connecting Gupta Objects to Databases

Onde as tabelas so encontradas SQLBase Oracle Usurio de Microsoft SQL

MDB_COMPANY

VOZ DE MDB_IN MDB_IN VOICE_ITEM MDB_PRODUCT

MDB_EMPLOYEE MDB_PAYMENT

Funcionando a aplicao
Esta seo diz-lhe como funcionar a aplicao da multi-base de dados.

Preparao funcionar a aplicao


Antes que voc funcione a aplicao da multi-base de dados da amostra, voc deve instalar as aplicaes de amostra de Gupta de modo que voc inclua a base de dados do CONSOLE da amostra em SQLBase. Voc deve ento criar uma base de dados em seu usurio de Oracle e no usurio de Microsoft SQL para prender as tabelas que a aplicao de amostra espera encontrar l. Voc igualmente precisa de definir a base de dados no usurio de Microsoft SQL como uma origem de dados de ODBC usando o administrador de ODBC. (Lido a documentao de Microsoft Windows para a informao sobre o administrador de ODBC.)
I m p o r t a n t e : Certificar-se que seu administrador de base de dados lhe d as permisses

apropriadas criar aquelas tabelas.

Configurando a aplicao
Voc deve configurar a aplicao antes de conectar a algumas das trs bases de dados modificando a lima de SQL.INI. Para SQLBase o programa de instalao modifica o SQL.INI para voc. Para o usurio de Microsoft SQL modificar a lima de SQL.INI na seo [win32client.dll] ajustando a palavra-chave do comdll a sqlodb32 e na seo [odbcrtr] ajustando a palavra-chave do fer do longbuf a 10000. Para Oracle modificar a lima de SQL.INI na seo [cliente win3 2. o DLL] ajustando a palavra-chave do comdll a sqlora32, e na seo [oragtwy] definindo a palavra-chave do remotedbname para sua base de dados com o correto conecta a informao da corda, ajustando a palavra-chave do fe r do longbuf igual a 200000, e ajustando a palavra-chave do fetchrow a 20. Para mais informao sobre conexes configurando, voc deve ler o captulo 2, inicializando e testando sua conexo; Captulo 3, conectando a Microsoft SQL o

Chapter 7

Connecting to Multiple Databases Concurrently

usurio; e captulo 4, conectando a Oracle.

7-

Connecting Gupta Objects to Databases

Running the application

O seguinte um exemplo das palavras-chaves que de SQL.INI voc define para conectar a SQLBase, do usurio de Microsoft SQL, e do Oracle:
[dbntsrv] dbdir=c: \ gupta servername=server1, dbname=island do sqlapipe, sqlapipe comdll=sqlapipe [dbntsrv.dll] [win32client] clientname=client1 [win32client .dll] comdll=sqlapipe comdll=sqlodb32 comdll=sqlora32 [odbcrtr] longbuffer=10000 [oragtwy] REMOTEDBNAME=oratcp, @ T : orasrvr. oracle. COM: 1 longbuffer=200000 fetchrow=2 0 N o t a : Referir a lima da amostra SQL.INI fornecida com a aplicao da multi-base de dados para

a ajuda em editar sua prpria lima de SQL.INI.

Conexo aos usurios


Para conectar aos usurios de base de dados, funcionar a aplicao de amostra, a seguir entrar a cada um dos usurios.

Comeando a aplicao de amostra


1.Comear SQLWindows.

2.Selecionar a

da barra de menu, a seguir abrir a aplicao de amostra M U L T I D B . A P P . Esta lima ficada situada n o s u b d i r e c t r i o das AMOSTRAS do diretrio de instalao de Gupta.
lima, aberta

3.Selecionar o

projeto, execut-lo

da barra de menu para executar a aplicao.

Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

Abertura aos usurios de base de dados


Entrar a cada um de trs usurios de base de dados (SQLBase, usurio de Microsoft SQL, e Oracle) selecionando a lima, conectar da barra de menu. Na caixa de dilogo: 1.Dar entrada com o nome da base de dados que voc deseja conectar a. 2.Dar entrada com um nome do usurio vlido. 3.Incorporar uma senha vlida. 4.Escolher o usurio de base de dados apropriado. 5.O clique conecta. Nota: O valor de defeito indicado para a senha * ** * **, mas o valor real da senha SYSADM. Uma vez que voc conecta com sucesso a um usurio, a aplicao remove o nome desse usurio da caixa combinado da seleo do usurio. Quando voc lhe conectar todos os trs usurios (e deve conectar a todos os trs para funcionar com sucesso a aplicao), estalar a sada.

Povoando as tabelas
Aps com sucesso a conexo a todas as trs bases de dados, voc deve povoar as tabelas em Oracle, usurio de Microsoft SQL, e SQLBase com dados. (Voc precisa de fazer este a primeira vez que voc funciona a aplicao, e quando as tabelas esto deixadas cair para toda a razo em Oracle e no usurio de Microsoft SQL). Para povoar as tabelas, selecionar a lima, povoar dados da barra de menu, a seguir selecionar SQLBase, Oracle ou usurio de Microsoft SQL. A aplicao copia as tabelas apropriadas da base de dados do CONSOLE de SQLBase base de dados que do alvo voc selecionou; a aplicao igualmente cria os ndices associados com aquelas tabelas.

Suprimindo das tabelas


Para suprimir das tabelas e dos ndices de SQLBase, do usurio de Microsoft SQL ou do Oracle, lima seleta, dados da limpeza da barra de menu, selecionar ento SQLBase, Oracle ou usurio de Microsoft SQL.

Indicando dados da tabela


Para indicar dados em uma janela da tabela da tabela da COMPANHIA (SQLBase), a tabela do EMPREGADO (usurio de Microsoft SQL), a tabela da FACTURA (Oracle), ou a tabela do PRODUTO (Oracle), tabela seleta da barra de menu, selecionam ento o nome apropriado da tabela. O formulrio indicado tem as seguintes teclas:
7Connecting Gupta Objects to Databases

Running the application

todos os dados atuais da base de dados para a janela selecionada da tabela. Estalar esta tecla para ver todos os dados que forem adicionados tabela ou mudados na tabela.
Refrescar-RefreshRedisplays

voc fileira vazia disponvel seguinte na janela da tabela. Estalar esta tecla para incorporar dados para uma fileira nova tabela.
Novo-NewPositions I n t r o d u z i r - I n s e r t I n s e r t s dados novos na base de dados. (Voc estala primeiramente n o v o para incorporar os dados novos, a seguir voc estala a i n s e r o para pr os dados na tabela.)

a base de dados com os dados que mudados voc incorporou (voc seleciona a fileira para actualizar, voc incorpora as mudanas nnesses fileira, a seguir voc clique
Actualizao-Actualizaes Actualizao).

da fileira selecionada da base de dados. Voc seleciona primeiramente a fileira estalando o encabeamento da fileira (a caixa leftmost indicada nessa fileira), a seguir estalando a s u p r e s s o .
Suprimir-DeleteDelete

indicam um formulrio dos detalhes. Do este os detalhes dolhe forma podem adicionar, actualizar, ou remover artigos da factura para a factura selecionada. Voc pode igualmente actualizar determinadas colunas na tabela do PAGAMENTO. (Esta tecla aparece somente na tabela da FACTURA.)
Os detalhes

comete todas as mudanas pendentes a cada base de dados (o autocommit presumido deficiente) e retorna ao formulrio principal.
Aplicar & prximo

suportam todas as mudanas pendentes a cada base de dados (o autocommit presumido deficiente) e retornam ao formulrio principal.
O descarte & Sada-ExitRolls N o t a : Para indicar o retrato bitmap para uma fileira dada na tabela do PRODUTO, estalar o

encabeamento da fileira (a caixa leftmost) nessa fileira.

Sobre o formulrio dos detalhes


Se voc seleciona uma fileira na tabela da FACTURA e estala o s d e t a l h e s tecla, voc v detalhes para dar forma com as trs janelas da tabela que mostram a seguinte informao para a factura selecionada: Artigos da factura Registro de pagamento Informao da tabela do PRODUTO
Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

O formulrio contem duas teclas de rdio: A r t i g o e pagamento d a f a c t u r a . Se voc seleciona o artigo da factura (o defeito), voc v que o PRODUTO para tabelar a informao e o foco vai janela da tabela dos artigos da factura. Se voc seleciona o pagamento, voc v que nenhum PRODUTO tabelar a informao e o foco no vai janela da tabela do registro de pagamento.

7-

Connecting Gupta Objects to Databases

O formulrio dos detalhes tem as seguintes teclas: todos os dados atuais da base de dados para a janela da tabela que tem o foco. Estalar esta tecla para ver todos os dados que forem adicionados tabela ou mudados na tabela.
Refrescar-RefreshRedisplays

voc fileira vazia disponvel seguinte na janela da tabela que tem o foco. Estalar esta tecla para incorporar dados para uma fileira nova tabela. Voc pode estalar esta tecla somente se o artigo da factura selecionado.
Novo-NewPositions I n t r o d u z i r - I n s e r t I n s e r t s dados novos na base de dados. (Voc estala primeiramente n o v o para incorporar os dados novos, a seguir voc estala a i n s e r o para pr os dados na tabela.) Voc pode estalar esta tecla somente se

o artigo da factura selecionado. a base de dados com os dados que mudados voc incorporou (voc seleciona a fileira para actualizar, voc incorpora as mudanas nnesses fileira, a seguir voc clique
Actualizao-Actualizaes Actualizao).

da fileira selecionada da base de dados. Voc seleciona primeiramente a fileira estalando o encabeamento da fileira (a caixa leftmost indicada nessa fileira), a seguir estalando a s u p r e s s o .
Suprimir-DeleteDelete

comete todas as mudanas pendentes a cada base de dados (o autocommit presumido deficiente) e retorna ao formulrio com a tabela da FACTURA.
Aplicar & prximo

suportam todas as mudanas pendentes a cada base de dados (o autocommit presumido deficiente) e retornam ao formulrio que contem a tabela da FACTURA.
O descarte & Sada-ExitRolls

Ajustes nivelados de alterao do autocommit e da isolao


Para permitir ou incapacitar o autocommit ou modificar os nveis da isolao, selecionar a l i m a , o p e s da barra de menu. A caixa de dilogo indicada mostra o ajuste atual do autocommit para cada usurio de base de dados e o ajuste atual do nvel da isolao para SQLBase e usurio de Microsoft SQL. Para permitir o autocommit, verific o checkbox. Para incapacitar o autocommit, espao livre o checkbox. Para ajustar (ou mudana) o nvel da isolao, incorporar um do RO, do RL, do CS, ou do RR ao campo do texto. Para encontrar o que estes nveis da isolao significam para o usurio de Microsoft SQL, ler o s n v e i s d a i s o l a o na pgina 3 - 4 . Para encontrar o que estes nveis da isolao significam para SQLBase, ler a documentao de SQLBase.

Chapter 7

Connecting to Multiple Databases Concurrently

Nota: Voc no pode ajustar uma isolao em nvel com Oracle.

7-

Connecting Gupta Objects to Databases

Design issues

Desligamento e retirada
Para desconectar de todos os usurios de base de dados e retirar a aplicao, selecionam a l i m a , s a d a da barra de menu.
N o t a : A aplicao de amostra no pode retirar ou as janelas prximas corretamente se voc seleciona p e r t o do sistema de Windows menu-menuselect a l i m a , r e t i r a m da barra de

menu preferivelmente.

Edies de projeto
Esta seo descreve algumas das edies de projeto levantadas no desenvolvimento da aplicao de amostra.

Conexo s bases de dados


A aplicao comea entrando e conectando a SQLBase, a usurio de Microsoft SQL, e a Oracle. Voc especific o nome de uma base de dados vlida, um nome de usurio, e a senha. Se voc precisa um nome e uma senha de usurio para estas bases de dados, contatar seu administrador de base de dados. Voc deve com sucesso conectar a cada um das bases de dados antes que voc tente fazer qualquer outra coisa com a aplicao. A aplicao define uma varivel separada do punho do SQL para cada usurio de base de dados. O punho identifica excepcionalmente uma conexo entre a aplicao de cliente e uma base de dados. Um punho especific para cada indicao de SQL executada. O seguinte trecho do cdigo mostra o uso do formulrio do incio de uma sesso e da caixa combinado de que o usurio seleciona a base de dados para conectar. Se o usurio sucede na conexo base de dados, a aplicao ajusta valores iniciais para o nvel da isolao (RR) e incapacita o autocommit.
Janela do formulrio: frmLogin... Aes da mensagem Em SAM_Create Chamada SalListSetSelect de SalListAdd da chamada de SalListAdd da chamada de SalListAdd da chamada (cmbServer, COMBO_SQLSERVER) (cmbServer, COMBO_ORACLE) (cmbServer, COMBO_SQLBASE) (cmbServer, 2) ... Tecla: pbConnect... Aes da mensagem Em SAM_Click Ajustar SqlUser=dfUserName
Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

Ajustar SqlPassword=dfPassword

7-

Connecting Gupta Objects to Databases

Design issues

Ajustar SqlDatabase=dfDatabase Ajustar o nCmbIndex=SalListQuerySelection (o cmbServer) Ajustar o strServer=SalListQueryTextX (cmbServer, nCmbIndex) se strServer=COMBO_SQLSERVER Ajustar o bSQLServerConnect=SqlConnect (hMSSQLServer) se bSQLServerConnect Ajustar o strDBSQLServer=dfDatabase Ajustar a chamada SalListSetSelect do nCmbEntries=SalListDelete (cmbServer, nCmbIndex) (cmbServer, nCmbEntries - 1) ! Fazer a isolao o strMSSQLSrvrIsoLvl= ajustado lido (RR) repetvel nivelado "RR" Chamar SqlSetIsolationLevel (o hMSSQLServer, strMSSQLSrvrIsoLvl) ! autocommit da inutilizao Ajustar o bMSSQLServerAC=FALSE Chamar SqlSetParameter (hMSSQLServer, DBP_AUTOCOMMIT, o bMSSQLServerAC, '') Mais se strServer=COMBO_ORACLE Ajustar o bOracleConnect=SqlConnect (o hOracle) Se bOracleConnect Ajustar o strDBOracle=dfDatabase Ajustar a chamada SalListSetSelect do nCmbEntries=SalListDelete (cmbServer, nCmbIndex) (cmbServer, nCmbEntries - 1) ! Oracle OCI no reserva ajustar uma isolao! nivelar, assim que ns no fazemos no caso de Oracle. ! autocommit da inutilizao Ajustar o bOracleAC=FALSE Chamar SqlSetParameter (hOracle, DBP_AUTOCOMMIT, bOracleAC, o `') Ajustar o dfDatabase='' Mais se strServer=COMBO_SQLBASE Ajustar o bSQLBaseConnect=SqlConnect (o hSQLBase) Se bSQLBaseConnect Ajustar o strDBSQLBase=dfDatabase Ajustar a chamada SalListSetSelect do nCmbEntries=SalListDelete (cmbServer, nCmbIndex) (cmbServer, nCmbEntries - 1) ! Fazer o nvel da isolao o strSQLBaseIsoLvl= ajustado (RR) lido repetvel' RR'
Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

Chamar SqlSetIsolationLevel (hSQLBase, o strSQLBaseIsoLvl) ! Incapacitar o bSQLBaseAC=FALSE do autocommit

7-

Connecting Gupta Objects to Databases

Design issues

Chamar SqlSetParameter (hSQLBase, DBP_AUTOCOMMIT, bSQLBaseAC,'') Chamada SqlSetParameter (hSQLBasePop, DBP_AUTOCOMMIT, o bSQLBaseAC,'') ajustou o dfDatabase='' se nCmbEntries=0 Chamada SalListClear (cmbServer) Chamada SalDisableWindow (pbConnect) ... Aes da mensagem Em SAM_Create Ajustar do sysadm ajustado do dfUserName= do island do dfDatabase= sysadm ajustado do dfPassword= ...

autocommit do ajuste
Em sua aplicao de SQLWindows voc pode ou especific limites da transao explicitamente em seu cdigo de aplicao, ou voc pode ter o processo de usurio da base de dados cada indicao de SQL em sua aplicao como sua prpria transao. Para especific explicitamente limites da transao, voc incapacita primeiramente o autocommit; voc executa ento indicaes COMETE ou do ROLLBACK em seu cdigo de aplicao no fim de cada transao. Para ter o processo de usurio da base de dados cada indicao de SQL como sua prpria transao, permite o autocommit. (Para uma informao mais geral sobre o autocommit, ler o A u t o c o m m i t na pgina 1 - 3 . Para a informao sobre o autocommit e um usurio de base de dados dado, ler o captulo devotado a esse usurio.) Na aplicao da multi-base de dados voc pode permitir ou incapacitar o autocommit independente para cada base de dados. Quando voc escreve uma aplicao da multibase de dados, voc precisa de saber o que cada um das bases de dados voc conectar faz se voc incapacita o autocommit, a seguir uma ou outra disconexo dessa base de dados ou termina a aplicao sem executar uma indicao da CONSIGNAO ou do ROLLBACK. Por exemplo, se voc conecta a SQLBase ou a Oracle e incapacita o autocommit, o usurio de base de dados comete sua ltima transao para voc se voc desconecta da base de dados ou termina sua aplicao sem executar uma indicao da CONSIGNAO ou do ROLLBACK. Sob as mesmas circunstncias, entretanto, o usurio de Microsoft SQL rola a transao para trs. A aplicao incapacita inicialmente o autocommit para todas as trs bases de dados chamando S q l S e t P a r a m e t e r com os dois argumentos D B P _ A U T O C O M M I T e F A L S O .
Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

Com os enfermos do autocommit, a aplicao podem assegurar-se de que as operaes nas vrias bases de dados estejam cometidas somente depois que todas as parcelas de uma transao foram terminadas com sucesso. O cdigo na aplicao que incapacita o autocommit em SQLBase :

7-

Connecting Gupta Objects to Databases

Design issues

Chamar SqlSetParameter (hSQLBase, DBP_AUTOCOMMIT, FALSOS,'') onde o h S Q L B a s e o punho do SQL para a

conexo a SQLBase.
I m p o r t a n t e : A aplicao de amostra controla transaes separada em cada um das bases de

dados; no executa transaes distribudas.

Simultaneidade e consistncia
Quando os usurios mltiplos alcanam a mesma base de dados, muito importante permitir o tanto como daqueles usurios como possvel come ao mesmo tempo a seus dados. Mais usurios podem alcanar dados ao mesmo tempo, mais simultaneidade h. Entretanto, ele igualmente importante para que os usurios mltiplos come dados consistentes. Idealmente, cada usurio deve ter a impresso que ou so o nico usurio da base de dados. O usurio trazido mais perto a este ideal, mais a consistncia de dados l . Voc influencia quanto consistncia da simultaneidade e de dados l ao alcanar suas bases de dados com o uso de fechamentos de dados e de cdigo de aplicao.

Travamento
O travamento inteligente melhora a simultaneidade e a consistncia. Estratgias de travamento diferentes diferentes da sustentao de bases de dados e maneiras diferentes do instrumento para que os usurios ajustem fechamentos. Por exemplo, SQLBase e o usurio de Microsoft SQL travam pginas inteiras dos dados. Oracle, de um lado, trava fileiras individuais (quando voc executa um SELETO... PARA a indicao da ACTUALIZAO). Entretanto, voc no pode escolher o tipo de lugares de Oracle do fechamento nessa fileira.
N o t a : Para ajustar um tipo particular do fechamento em SQLBase e em usurio de Microsoft SQL, voc ajustou alguma isolao nvel-levelsee n v e i s d a i s o l a o na pgina 7 - 1 3 .

Travando as estratgias so pessimistas ou optimistas. Uma estratgia de travamento pessimista supor que um outro usurio tentar actualizar a mesma fileira que voc pde olhar. Se voc escolhe esta estratgia, o usurio de base de dados trava a fileira primeiramente antes que voc consiga ver os dados, assim assegurando um alto nvel da consistncia de dados. Um travamento optimista a estratgia supor o oposto: nenhum outro usurio tentar actualizar a fileira que voc est olhando. Se voc escolhe esta estratgia, o usurio de base de dados no trava a fileira, assim assegurando um grau mais elevado de simultaneidade. Se voc adota uma estratgia de travamento optimista, voc deve pr verificaes em seu cdigo para verific para o senhor mesmo que um outro usurio da base de dados
Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

tem no actualizado dos dados que o usurio de sua aplicao est vendo.

7-

Connecting Gupta Objects to Databases

Design issues

Nveis da isolao
SQLBase e o usurio de Microsoft SQL permitem que voc ajuste nveis da isolao. Um nvel da isolao define o grau a que as transaes so impedidas da interferncia um com o otro. Voc ajustou a isolao em nvel em sua aplicao de SQLWindows chamando a funo SqlSetIsolationLevel do SAL. A maioria de bases de dados suportam diversos nveis da isolao. Entretanto, os nveis da isolao no so definidos na mesma maneira em todas as bases de dados. O comit de ANSI/SQL definiu um jogo padro de nveis da isolao com semntica padro, mas a maioria de bases de dados no executam estes nveis da isolao com precisamente os aqueles semntica. Alguns dos nomes de uso geral por vendedores da base de dados para nveis da isolao so: Sujo - ler, estabilidade Uncommitted lida, do cursor, lida repetvel, e Serializable. Outros nomes que voc ver que para incluir consultar, ler somente, liberar fechamentos, e prender o fechamento.
A v i s o : Algumas bases de dados usam os mesmos nomes que aqueles especific pelo comit de

ANSI/SQL para nveis da isolao, mas no executam a semntica de ANSI/SQL para aqueles nveis da isolao. No supr que voc sabe o que um nvel da isolao significa apenas de seu nome. Voc deve ler a documentao do vendedor da base de dados para encontrar o que o comportamento para cada um dos nveis da isolao definidos por esse vendedor.

A maioria de bases de dados relacionais permitem que os usurios ajustem nveis da isolao (no nvel da indicao, no nvel da transao, ou em ambos) em run-time. Estas bases de dados igualmente definem um nvel da isolao do defeito, mas o defeito varia da base de dados base de dados.
N o t a : Oracle no permite que sua aplicao ajuste uma isolao em nvel. Isto porque

as aplicaes de SQLWindows usam o SQL dinmico, e Oracle no suporta o ajuste de nveis da isolao com SQL dinmico

Por exemplo, o nvel da isolao do defeito em SQLBase chamado Repetvel Leitura (RR). SQLBase executa este nvel da isolao mantendo um fechamento lido na fileira pedida at que a transao esteja cometida. Um outro exemplo vem do usurio de Microsoft SQL, onde o nvel da isolao do defeito chamado Uncommitted lido. Com este nvel da isolao, a base de dados pode emitir um cliente que pede uma fileira os dados recentemente mudados nessa fileira mesmo se aquelas mudanas no foram cometidas ainda. Mesmo que estes nveis da isolao variem na sintaxe e na semntica para cada base de dados, SQLWindows permite at quatro nveis da isolao. A semntica destes nveis da isolao depende da base de dados que sua aplicao conecta a. Para aprender o que isolao nivela suportado para uma base de dados dada, leu o captulo neste livro devotado a essa base de dados.
Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

Por exemplo, para ajustar a isolao em nvel no usurio de Microsoft SQL a SQL_TXN_SERIALIZABLE, fazer a chamada:
Chamar SqlSetIsolationLevel (hMSSQLServer, `os RR')

A aplicao escolhe um valor inicial para que o nvel da isolao garanta que os dados permanecem consistentes at que a aplicao execute uma indicao da CONSIGNAO ou do ROLLBACK. Com este nvel da isolao outros usurios da base de dados esto impedidos de mudar dados fechados at que a aplicao termine a transao. A aplicao executa todas as indicaes de SQL como indicaes de SQL dinmicas.
N o t a : Porque Oracle OCI no suporta o ajuste da isolao nivela para indicaes de SQL

dinmicas, a aplicao no ajusta uma isolao em nvel com Oracle.

As aplicaes orientadas base de dados do cliente/usurio caem em duas categorias largas: aplicaes transao-transaction-based e aplicaes de sustentao da deciso. as aplicaes Transao-Transaction-based afetam geralmente umas ou vrias tabelas. Todos trabalham relacionado a uma nica transao devem ser cometidos somente se todas as operaes nessa transao terminaram com sucesso. Se a aplicao detecta a violao de um confinamente de integridade, pde escolher rolar para trs a transao. As aplicaes de sustentao da deciso fazem tipicamente muitas perguntas e somente mudam ocasionalmente a base de dados. Porque as perguntas da sustentao de deciso tomam geralmente um tempo longo executar, voc normalmente no quer adquirir nenhuma fechamentos ao longo da maneira. Se voc escolhe adquirir fechamentos durante a pergunta, voc libera normalmente aqueles fechamentos assim que a pergunta for feita. as aplicaes Transao-Transaction-based precisam de suportar um alto nvel da simultaneidade e da consistncia entre usurios porque estas aplicaes so funcionadas tipicamente por muitos usurios ao mesmo tempo. Para suportar um alto nvel da simultaneidade estas aplicaes selecionam tipicamente os nveis os mais permissive da isolao disponveis. Estes nveis da isolao dirigem a base de dados para no travar dados (reservar suja l) ou para no liberar muito rapidamente fechamentos (como a liberao de um fechamento assim que uma fileira for ler-read this nvel da isolao chamado frequentemente do "estabilidade cursor "). As aplicaes de sustentao da deciso no exigem altos nveis da simultaneidade; podem usar um travamento muito mais restritivo para manter mais consistncia de dados. Entretanto, se voc escreve uma aplicao de sustentao da deciso que sabe alcanar a mesma base de dados que uma aplicao transao-transaction-based, voc deve a projetar usar (pelo menos quase) o mesmo nvel da isolao que a aplicao transao-transaction-based para suportar o alto nvel da simultaneidade necessrio pela aplicao transao-transaction-based.
7Connecting Gupta Objects to Databases

Design issues

As aplicaes de sentido nico podem come um alto nvel da simultaneidade e um alto nvel da consistncia de dados escolher um nvel permissive da isolao (um que libera fechamentos

Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

rapidamente), permitir a preservao do contexto do cursor (CCP), a seguir cometer transaes rapidamente (permitindo o autocommit ou executando a indicao da CONSIGNAO freqentemente).
N o t a : Geralmente, se a sustentao de deciso e as aplicaes transao-transaction-based

alcanam a mesma base de dados, as aplicaes de sustentao da deciso devem usar uma estratgia de travamento optimista para reduzir seu impacto nas aplicaes transao-transactionbased.

A aplicao da multi-base de dados da amostra combina elementos de uma aplicao de sustentao da deciso e de uma aplicao transao-transaction-based. A parcela que como processos de aplicao da sustentao da deciso as tabelas da COMPANHIA, do PRODUTO, e do EMPREGADO; a parcela que punhos transaotransaction-based a criao das facturas e o acesso das tabelas de INVOICE_ITEM, de PAGAMENTO, e de PRODUTO. Porque a aplicao um hbrido, precisa um alto nvel da consistncia e da simultaneidade. Esta aplicao ajusta a isolao em nvel l i d a r e p e t v e l e incapacita o autocommit; em sua prpria aplicao voc deve fazer as decises de projeto apropriadas (tais como a escolha de um nvel da isolao) que o deixaram golpear um contrapeso apropriado entre a simultaneidade e a consistncia de dados.

Replicating esquemas e dados da tabela


A aplicao cria o esquema da FACTURA, INVOICE_ITEM, e as tabelas do PRODUTO na base de dados do CONSOLE de SQLBase no usurio de base de dados de Oracle com a CRIAO TABELAM a indicao. A aplicao copia os dados de SQLBase a Oracle using SELETO... DE e INSERO... Em indicaes. H um tipo de alguns dados diferenas entre SQLBase, um Oracle, e um usurio de Microsoft SQL. Voc v estes tipos das diferenas sempre que voc escreve a uma nica aplicao essa acessos bases de dados heterogneas. Os tipos de alguns dados no so suportados em todas as bases de dados que sua aplicao deve alcanar. Por exemplo, a coluna do retrato na tabela do PRODUTO em SQLBase uma coluna LONGA. Quando a aplicao move estes dados para Oracle, redefine esta coluna como dados CRUS LONGOS porque a coluna contem dados binrios. Os dados da tabela de cpias da aplicao de SQLBase a Oracle, ao usurio de Microsoft SQL, ou de SQLBase prprio executando um SELETO de SQLBase, executando ento uma indicao da INSERO para coloc os dados na base de dados do alvo. A aplicao igualmente cria ndices da tabela na base de dados do alvo. Ao criar tabelas em um usurio de base de dados para receber dados das tabelas em um outro usurio de base de dados, voc deve especific o tipo apropriado definies da coluna na CRIAO TABELA a indicao. Porque os usurios de base de dados diferentes todos no suportam o mesmo jogo de tipos de dados, voc deve decidir que tipos de dados a se usar quando voc copia dados de um usurio de base de dados a
7Connecting Gupta Objects to Databases

Design issues

outro.

Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

Por exemplo, a maioria de usurios de base de dados suportam um tipo de dados chamado VARCHAR. Entretanto, o comprimento limita para este tipo de dados varia de um usurio de base de dados a outro. Dependendo do tamanho de VARCHAR real os dados que voc est copiando, voc podem ter que especific um tipo da coluna excepo de VARCHAR (tal como POR MUITO TEMPO, por exemplo) no usurio de base de dados a que voc est copiando os dados. Dependendo das bases de dados que voc est alcanando em suas prprias aplicaes, voc pode querer usar especialmente uma tcnica diferente sempre que voc precisa de copiar dados de uma base de dados a outra, se voc grandes quantidades moventes (megabytes) de dados. Ler a documentao nas bases de dados que suas aplicaes alcanam para a informao que pode o ajudar a decidir como executar eficientemente tal operao. No seguinte trecho, a aplicao cria a tabela do EMPREGADO no usurio de Microsoft SQL e a tabela da FACTURA em Oracle; copia ento os dados das tabelas correspondentes de SQLBase base de dados do alvo using a funo interna de TransferData.
Menu emergente: dados do &Populate... Artigo de menu: Usurio de Microsoft SQL... Ajustes do menu Permitido quando: o hMSSQLServer verific quando: Aes do menu Ajustar o strSQL = o `CRIAM o `da TABELA|| MDB_EMPLOYEE || `(CARVO ANIMAL DE EMPLOYEE_ID (8),' | | `LAST_NAME VARCHAR (30),' | | `FIRST_NAME VARCHAR (30),' | | CARVO ANIMAL DO MI DO `(1),' | | EXTENSO VARCHAR DO `(4),' | | `OFFICE_NO VARCHAR (5),' | | CARVO ANIMAL DO `DEPT_ID (5),' | | DATETIME DO `DATE_HIRED,' | | FLUTUADOR DO `CURRENT_SALARY (8))' Se no SqlPrepareAndExecute (hMSSQLServer, strSQL) Ajustar strMsgPrompt=MSGBOX_MSGPART1 | | MDB_EMPLOYEE || MSGBOX_MSGPART2 Ajustar o nMsgResult=SalMessageBox (strMsgPrompt, MSGBOX_TITLE, MB_OkCancel) Se nMsgResult=IDCANCEL Retornar -1
7Connecting Gupta Objects to Databases

Design issues

Mais Chamada TransferData (MDB_EMPLOYEE)

Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

Chamada SalMessageBox ("criar o ndice para" | | MDB_EMPLOYEE, "criam o ndice", MB_Ok) Ajustar o NDICE ORIGINAL do strSQL='CREATE ' | | MDB_EMPLOYEE_IDX || "ON" | | MDB_EMPLOYEE | | "(EMPLOYEE_ID)" se no SqlPrepareAndExecute (hMSSQLServer, strSQL) Chamada SalMessageBox (do "erro SQL que cria o ndice" | | MDB_EMPLOYEE_IDX, "erro! ", MB_Ok) ...

Artigo de menu: Oracle... Ajustes do menu Permitido quando: hOracle Verific quando: Aes do menu Ajustar o strSQL=' CRIAM o `da TABELA | | MDB_INVOICE || `(DECIMAL DE INVOICE_NO (8, 0) NAO NULO,' | | `COMPANY_ID SMALLINT NAO NULO,' | | `COMPANY_NAME VARCHAR (30),' | | DATA DO || `INVOICE_DATE,' DATA DO `DATE_PAID,' || || STATUS VARCHAR DO DECIMAL DO `AMOUNT_PAID | (8.2),'ANIMAL DO | CARVO `EMPLOYEE_ID (8))' Se no SqlPrepareAndExecute (hOracle, strSQL) Ajustar o strMsgPrompt = o MSGBOX_MSGPART1 | | MDB_INVOICE | | MSGBOX_MSGPART2 Ajustar o nMsgResult=SalMessageBox (strMsgPrompt, MSGBOX_TITLE, MB_OkCancel) Se nMsgResult=IDCANCEL Retornar -1 Mais Chamada TransferData (MDB_INVOICE) Chamada SalMessageBox ("criar o ndice para" | | MDB_INVOICE, "criam o ndice", MB_Ok) Ajustar o NDICE do strSQL='CREATE ' | | MDB_INVOICE_IDX || "ON" | | MDB_INVOICE | | "(INVOICE_NO)" se no SqlPrepareAndExecute (hOracle, strSQL)

7-

Connecting Gupta Objects to Databases

Design issues

Chamada SalMessageBox (do "erro SQL que cria o ndice" || MDB_INVOICE_IDX, "erro! ", MB_Ok)

Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

A funo de TransferData aceita o nome da tabela como a entrada, a seguir transfere dados de SQLBase base de dados do alvo. Se o nome da tabela da entrada MDB_COMPANY, a base de dados do alvo SQLBase; se MDB_EMPLOYEE ou MDB_PAYMENT, a base de dados do alvo so usurio de Microsoft SQL; se no, a base de dados do alvo Oracle.
Funo: Retornos de TransferData Booleano: bOk Parmetros Corda: strTableName... Aes Quando SqlError Chamada SalMessageBox (do "erro SQL na funo dos dados de transferncia", de "erro de dados transferncia! ", Retorno de MB_Ok) FALSO Se strTableName=MDB_EMPLOYEE ! Lido da tabela do empregado de SQLBase no usurio do MS SQL Ajustar INSERO do strTempSQL=' no `|| MDB_EMPLOYEE | | "VALORES (: dfCol1,: dfCol2,: dfCol3,: dfCol4,: dfCol5,: dfCol6,: dfCol7,: dfCol8,: dfCol9)" Chamada SqlPrepare (hMSSQLServer, strTempSQL) Ajustar o strSQL='SELECT * DO EMPREGADO no ` | | `: dfCol1,: dfCol2,: dfCol3,: dfCol4,: dfCol5,' | | `: dfCol6,: dfCol7,: dfCol8,: dfCol9' Se lao TData1 de SqlPrepareAndExecute (hSQLBasePop, strSQL) Se chamada SqlExecute de SqlFetchNext (hSQLBasePop, nRetval) (hMSSQLServer) mais Ruptura TData1 ! Se o autocommit est para o usurio de Microsoft SQL,! cometer as mudanas. Se no bMSSQLServerAC Chamada SqlCommit (hMSSQLServer) Do retorno RECTIFICAR ... Se strTableName=MDB_INVOICE ! Ler a tabela da factura de SQLBase em Oracle Ajustar INSERO do strTempSQL=' no ` | | MDB_INVOICE | | VALORES do `(: nInvNum,: nCompId,: strCompName,: dInvDate,' || `: dDatePaid,: strStatus,: nAmtPaid,: chamada SqlPrepare do strEmpId)' (hOracle, strTempSQL)
7Connecting Gupta Objects to Databases

Design issues

Ajustar o strSQL = o `SELETOS * DA FACTURA no ` | | `: nInvNum,: nCompId,: strCompName,: dInvDate,' | |

Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

`: dDatePaid,: strStatus,: nAmtPaid,: strEmpId' se lao TData3 de SqlPrepareAndExecute (hSQLBasePop, strSQL) Se chamada SqlExecute de SqlFetchNext (hSQLBasePop, nRetval) (hOracle) Mais Ruptura TData3 ! Se o autocommit est para Oracle, cometer as mudanas. Se no bOracleAC Chamada SqlCommit (hOracle) Do retorno RECTIFICAR ...

Indicando dados da tabela


A aplicao indica dados da tabela em janelas dinmicas da tabela (chamando a funo SalTblPopulate d o S A L ) . Dos usos dinmicos as colunas automticas de uma janela da tabela, que voc pode usar para indicar os resultados de todas as colunas qualquerwhatsoeverautomatic da pergunta so do tipo CORDA, mas podem indicar dados de qualquer tipo (exceto os tipos de dados LONGOS). Para mais informao sobre S a l T b l P o p u l a t e , referir a r e f e r n c i a d e f u n o d e S Q L W i n d o w s . No seguinte trecho do cdigo, a aplicao recupera dados da tabela da COMPANHIA (em SQLBASE) em uma janela dinmica da tabela.
Artigo de menu: &Company... Ajustes do menu Permitido quando: hSQLBase Verific quando: Aes do menu Chamada SalShowWindow (tblInfo) Chamada SalBringWindowToTop (informao do tbl)... Ajustar o strSQL = "SELECIONAM * DA COMPANHIA" Chamar SalTblPopulate (tblInfo, hSQLBase, strSQL, TBL_FillNormal)...

7-

Connecting Gupta Objects to Databases

No seguinte trecho do cdigo, a aplicao recupera dados da tabela do EMPREGADO (no usurio de Microsoft SQL) em uma janela dinmica da tabela.
Artigo de menu: &Employee... Ajustes do menu Permitido quando: hMSSQLServer Verific quando: Aes do menu Chamada SalShowWindow (tblInfo) Chamada SalBringWindowToTop (informao do tbl) ... Ajustar o strSQL=' SELECIONAM * do `|| MDB_EMPLOYEE Chama SalTblPopulate (informao do tbl, hMSSQLServer, strSQL, TBL_FillNormal) ...

No seguinte trecho do cdigo, a aplicao recupera dados da tabela do PRODUTO (em Oracle) em uma janela dinmica da tabela.
Artigo de menu: &ProductInvoice... Ajustes do menu Permitido quando: hOracle Verific quando: Aes do menu Chamada SalShowWindow (informao do tbl) Chamada SalShowWindow de SalBringWindowToTop da chamada (tblInfo) (picPicture)... Ajustar o strSQL='SELECT STYLE_ID, ESTILO, DESCRIO, PREO DE ' || MDB_PRODUCT Chama SalTblPopulate (informao do tbl, hOracle, strSQL, TBL_FillNormal)...

Chapter 7

Connecting to Multiple Databases Concurrently

Colunas chaves
As colunas chaves para as tabelas usadas na aplicao da multi-base de dados so:
company_id na tabela da COMPANHIA employee_id na tabela do EMPREGADO invoice_no na tabela da FACTURA style_id na tabela do PRODUTO
Nota: Voc no pode actualizar uma coluna chave.

Processamento de transao
A aplicao de Gupta da multi-base de dados centra ao redor quatro transaes. Trs destas transaes envolvem apenas uma nica tabela do SQL situada em um usurio de base de dados especfico. Nenhuma destas tabelas tem dependncias em toda a outra tabela. As trs transaes so: Recuperar, introduzir, suprimir, e actualizar da tabela da COMPANHIA em SQLBase. Recuperar, introduzir, suprimir, e actualizar da tabela do PRODUTO em Oracle. Recuperar, introduzir, suprimir, e actualizar da tabela do EMPREGADO no usurio de Microsoft SQL. A transao mais complexa a transao da FACTURA. Envolve tabelas mltiplas: as tabelas da FACTURA e do INVOICE_ITEM em Oracle e na tabela do PAGAMENTO no usurio de Microsoft SQL. Quando o usurio estala o s d e t a l h e s abotoam-se para uma factura especific (e o usurio igualmente selecionou a t e c la d e r d i o do artigo da factura), a aplicao indicam um formulrio que mostra todos os artigos da factura, uma entrada do nico pagamento, e uma lista da tabela do PRODUTO. A aplicao de amostra controla duas transaes independentes: um em Oracle e o outro no usurio de Microsoft SQL; no processa esta transao como uma transao distribuda entre Oracle e o usurio de Microsoft SQL. Uma transao distribuda uma onde a transao compartilhada por dois ou mais (possivelmente usurios) de base de dados heterognea. Quando um cliente executa a indicao da CONSIGNAO, todos os usurios que participam na transao devem coordenar para fazer uma colectividade contudo a nica deciso se registar todas as mudanas na transao ou undo todas as mudanas. Um coordenador da consignao (gerente do sincronizao-sync-point) controla este processo de tomada de deciso. O coordenador sabe sobre todos os participantes,
7Connecting Gupta Objects to Databases

Design issues

emite uma preparao para comete, e recebe reconhecimentos. Quando o coordenador recebe todos os reconhecimentos, emite uma consignao a todos os participantes. Uma vez que os participantes tm tudo a reconhecido

Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

bem sucedido cometer, o coordenador escreve um marcador da consignao. O coordenador da consignao igualmente mantem a trilha se um usurio de base de dados vai para baixo durante a segunda parcela da fase da consignao. Se isso acontece, o coordenador ajuda a resolver a transao. Se um usurio adiciona um artigo novo da factura para um nmero de factura selecionado, as colunas do style_id e do item_price na tabela de INVOICE_ITEM esto ajustadas do produto escolhido selecionado da tabela do PRODUTO. Uma vez que uma quantidade especific, a coluna de uma quantidade na tabela do PAGAMENTO est para refletido a quantidade do produto novo e o preo somando todas as quantidades do artigo da factura cronometra seu preo unitrio para o nmero de factura especific. Se o usurio remove um artigo da factura para um nmero de factura selecionado, a coluna de uma quantidade na tabela do PAGAMENTO est ajustada para refletir a remoo de uma quantidade do produto e o preo somando todas as quantidades do artigo da factura cronometra seu preo unitrio para o nmero de factura especific. Se o usurio muda a quantidade associada com um artigo selecionado da factura, a coluna de uma quantidade na tabela do PAGAMENTO est ajustada para refletir a alterao de uma quantidade do produto e o preo somando todas as quantidades do artigo da factura cronometra seu preo unitrio para o nmero de factura especific.
N o t a : Uma maneira til de realar a aplicao de amostra certificar-se de que uma

outra aplicao no pode mudar uma fileira que a aplicao de amostra leia at que execute uma CONSIGNAO ou um ROLLBACK. Voc pode fazer este em Oracle recuperando dados com o SELETO... PARA a indicao da ACTUALIZAO.

A aplicao trava os dados do PAGAMENTO porque usa um nvel da isolao de repetvel lido no usurio de Microsoft SQL. Desde que a aplicao de amostra transao- baseada predominante, ns incapacitamos o autocommit; isto deixa a aplicao tomar o controle dos limites da transao. Quando o usurio cria ou actualiza um artigo da factura, a aplicao precisa de garantir que todas as mudanas esto cometidas somente quando as mudanas foram feitas com sucesso a todas as tabelas. Se mesmo uma das actualizaes falha, a aplicao rola para trs todas as mudanas que compo a transao. A aplicao deve igualmente garantir a integridade de cada fileira nas tabelas afetadas pela transao. Nenhum cliente deve ser permitido actualizar uma fileira que um outro cliente ou leu ou actualizado. Para fazer este a aplicao seleciona o repetvel do nvel da isolao lida. Isto pr um fechamento sobre cada fileira esforos de um usurio e mantem esse fechamento at que o usurio cometa (ou rola para trs) transaotransactionother usurios no puder escrever a algumas das fileiras fechados. Por exemplo, quando um usurio cria um artigo novo da factura, a fileira do PAGAMENTO precisa de ser fechado quando a aplicao actualizar a coluna de uma
7Connecting Gupta Objects to Databases

Design issues

quantidade, somando todas as quantidades do artigo da factura e seus preos unitrios. A fileira da tabela do PRODUTO para este artigo da factura precisa

Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

essa do PRODUTO a entrada prpria fechado de modo que a informao no possa ser mudada e no pode ser removido. Todos artigos restantes da factura para o nmero de factura selecionado precisam de ser fechados desde que a aplicao usa aqueles quantidades e preos unitrios para calcular uma quantidade nova na tabela do PAGAMENTO. Tambm, nenhuns dos artigos da factura devem ser removidos quando a aplicao fizer o clculo. Para controlar transaes explicitamente uma aplicao deve incapacitar o autocommit. Se voc incapacita o autocommit e no comete nem no rola para trs a ltima transao antes de desconectar ou de terminar a aplicao, algumas bases de dados cometem a ltima transao quando outro a rolarem para trs. Ler sua documentao do vendedor da base de dados para encontrar o que sua base de dados faz nessa situao.

Processando a transao da FACTURA


A aplicao permite que um usurio indique entradas de INVOICE_ITEM e informao do PAGAMENTO para uma factura selecionada. Um usurio pode introduzir, actualizar, ou suprimir de artigos novos da factura. A aplicao ajusta a quantidade associada do PAGAMENTO para a factura selecionada conformemente. A aplicao permite que o usurio actualize uma entrada do PAGAMENTO mas no suprima d. Porque h somente um registro de PAGAMENTO para cada nmero de factura, um registro de PAGAMENTO deve existir contanto que uma factura existir. Um usurio no pode adicionar uma entrada nova do PAGAMENTO para um nmero de factura selecionado porque h somente um registro de PAGAMENTO para cada nmero de factura. Um usurio igualmente no pode actualizar campos selecionados na tabela de INVOICE_ITEM ou de PAGAMENTO. Por exemplo, o item_price na tabela de INVOICE_ITEM ajustado da coluna do preo da tabela do PRODUTO; o item_no e o invoice_no so campos chaves. A coluna de uma quantidade na tabela do PAGAMENTO calculada somando todos os artigos da factura (a coluna da quantidade cronometra a coluna do item_price); o invoice_no o campo chave.

Emperramento dinmico
O emperramento dinmico em SQLBase e em toda a base de dados que voc alcanar usando ODBC permite que voc use variveis da coluna do tipo CORDA como variveis do ligamento. Porque voc no pode usar o emperramento dinmico com Oracle, voc deve definir cada varivel da coluna com o tipo de dados correto. No seguinte trecho do cdigo, a aplicao usa variveis automticas da coluna como variveis do ligamento para actualizar a tabela da COMPANHIA em SQLBase e a tabela do EMPREGADO no usurio de Microsoft SQL.
Tecla: pbUpdate... Aes da mensagem
7Connecting Gupta Objects to Databases

Design issues

Em SAM_Click Ajustar o nNumCols=SalSendMsg (tblInfo, SAM_GETCOLCOUNT, 0, 0) ajustam o strSQL='UPDATE ' Se nTableIndicator=SQLBASE_TABLE

Connecting Gupta Objects to Databases

7-

Ajustar o strSQL=strSQL | | MDB_COMPANY | | "AJUSTAR" Ajustar o hLocalSql=hSQLBase Mais se nTableIndicator = MSSQLSERVER_TABLE Ajustar o strSQL=strSQL | | MDB_EMPLOYEE | | "AJUSTAR" Ajustar nIndex ajustado do hLocalSql=hMSSQLServer = 2 Dar laos em Binding2 Chamar SalTblGetColumnTitle (SalTblGetColumnWindow (tblInfo, nIndex, COL_GetPos), strColName, MAXCOLNAME_LENGTH) Se nIndex < nNumCols Ajustar o strSQL=strSQL | | strColName | | `=: ' | | tblInfo# do `' | | SalNumberToStrX (nIndex, 0) | | `, ` Mais se nIndex = nNumCols Ajustar o strSQL=strSQL | | strColName | | `=: ' | | tblInfo# do `' | | SalNumberToStrX (nIndex, 0) Ruptura Binding2 Ajustar o nIndex=nIndex + 1 Chamar SalTblGetColumnTitle (SalTblGetColumnWindow (informao do tbl, 1, COL_GetPos), strColName, MAXCOLNAME_LENGTH) Ajustar o strSQL=strSQL | | `ONDE ` | | strColName | | `=: tblInfo#1' Chamada SqlPrepare (hLocalSql, strSQL) Chamada SalTblDoUpdates (tblInfo, hLocalSql, VERDADEIROS)
...

O seguinte um exemplo do cdigo similar exigido para actualizar a tabela da FACTURA em Oracle onde ns no podemos se aproveitar de variveis automticas da coluna da CORDA como variveis do ligamento:
Tecla: pbUpdate... Aes da mensagem Em SAM_Click Ajustar o strSQL='UPDATE ' Se nTableIndicator=ORACLE_TABLE1 Ajustar o strSQL=strSQL | | MDB_INVOICE || "AJUSTAR" Ajustar o hLocalSql=hOracle Ajustar o strSQL = o strSQL | | `COMPANY_ID=: nCompId,' | | `COMPANY_NAME=: strCompName,' || `INVOICE_DATE=: dInvDate,' | | `DATE_PAID=: dDatePaid,' | | `STATUS=: strStatus,' | | `AMOUNT_PAID=: nAmtPaid,' | | `EMPLOYEE_ID=: `do strEmpId | |

Implementation details

`ONDE INVOICE_NO=: nInvNum' Ajustar o nInvNum=SalStrToNumber (tblInfo#1) ajustam o nCompId=SalStrToNumber (tblInfo#2) ajustam strCompName=tblInfo#3 Ajustar o dInvDate=SalStrToDate (tblInfo#4) ajustam o dDatePaid=SalStrToDate (tblInfo#5) ajustam strStatus=tblInfo#6 Ajustar o nAmtPaid=SalStrToNumber (tblInfo#7 strEmpId=tblInfo#8 ajustado Chamar SqlPrepare (hLocalSql, o strSQL) Chamar SalTblDoUpdates (tblInfo, hLocalSql, VERDADEIROS)...
N o t a : A aplicao de amostra supor que a primeira coluna o campo chave.

Detalhes de execuo
Esta seo descreve alguns dos detalhes de execuo envolvidos em actualizar dados da tabela, a gerncia dinmica das janelas da tabela, o tipo de dados dinmico emperramento, os nveis da isolao, e o autocommit.

Actualizando dados da tabela


A aplicao de amostra supor que a primeira coluna de uma tabela uma coluna chave; a aplicao usa esta chave para operaes da actualizao ou da supresso. Esta suposio permite que a aplicao empreg o cdigo comum ao construir ONDE clusula de uma indicao SELETA, da ACTUALIZAO, ou da SUPRESSO. O seguinte um exemplo de como a aplicao constri ONDE clusula de uma indicao SELETA:
Chamada SalTblGetColumnTitle ( SalTblGetColumnWindow (tblInfo, 1, COL_GetPos), strColName, MAXCOLNAME_LENGTH) Ajustar o strSQL=strSQL | | "ONDE" | | strColName | | "=: " | | "tblInfo#1"

Gerncia dinmica das janelas da tabela


As janelas dinmicas da tabela deixaram o colaborador usar janelas da tabela sem definir tanto quanto sobre elas no tempo do projeto. Voc usa janelas dinmicas da tabela para indicar dados das perguntas de usurio diferentes. Estas perguntas podem especific nmeros de colunas de deferimento e mesmo de tipos de dados diferentes. Para indicar dados em uma janela dinmica da tabela, chamar
SalTblPopulate.

A aplicao especific TBL_FillNormal ao chamar S a l T b l P o p u l a t e ; isto povoa


Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

somente a parcela visvel da janela da tabela. As fileiras novas so buscadas somente

7-

Connecting Gupta Objects to Databases

Implementation details

quando forem trazidos na vista. Desde que as tabelas tm somente um pequeno nmero de fileiras, especific TBL_FillNormal no melhora o desempenho significativamente. Entretanto, para as tabelas que tm centenas ou talvez milhares de fileiras, especific TBL_FillNormal pode extremamente melhorar o desempenho.

Usurio e SQLBase de Microsoft SQL


Para a o p o do menu do povoamento, a funo de TransferData busca dados da fileira de SQLBase em variveis genricas da coluna do tipo Corda-STRINGfor o exemplo, dfCol1, dfCol2, e assim por diante. Quando a aplicao introduz uns dados da fileira na base de dados de usurio de Microsoft SQL ou na base de dados de SQLBase, usa estas mesmas variveis genricas da coluna que as variveis do programa. A insero, actualizao, supresso, e refresca teclas usa as variveis automticas da coluna criadas por SalTblPopulate como os nomes variveis do ligamento na INSERO associada, ACTUALIZAO, SUPRESSO, ou SELECIONA a indicao. As variveis automticas da coluna so do tipo CORDA e tm a seguinte sintaxe:
column_number

do table_name#

Por exemplo, a varivel da primeira coluna para o tblInfo dinmico da tabela o lInfo# 1 . da TB. Se o usurio seleciona a o p o do menu da tabela, a aplicao chama SalTblPopulate para construir uma janela dinmica da tabela para a tabela selecionada da COMPANHIA da tablethe- em SQLBase e a tabela do EMPREGADO em Microsoft SQLServer.

Oracle
A coluna do RETRATO da tabela do PRODUTO no indicada como uma coluna na janela dinmica da tabela porque os dados so um mapa de bocado. H uma rea separada no formulrio onde a imagem de produto indicada se o usurio estala sobre o encabeamento da fileira de uma entrada de tabela dada do PRODUTO. Se o usurio seleciona a o p o do menu da tabela, a aplicao chama SalTblPopulate para construir uma janela dinmica da tabela para as tabelas da FACTURA e do PRODUTO em Oracle.

Tipo de dados dinmico emperramento


Porque Oracle no suporta o tipo de dados dinmico emperramento, a aplicao no usa as variveis automticas da coluna como variveis do ligamento para tipos de dados diferentes da CORDA na INSERO, NO ACTUALIZA, nem NO SUPRIME de indicaes. Para os tipos de dados do NMERO e da DATA, as chamadas SalStrToNumber da aplicao e SalStrToD comeram para converter os dados da corda da varivel automtica ao nmero correto ou a aplicao do formatthe- da data usa
Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

uma varivel especfica do ligamento daquele tipo de dados.

7-

Connecting Gupta Objects to Databases

Implementation details

Oracle
Para a opo do menu do povoamento, a funo de TransferData busca dados da fileira de SQLBase no tipo de dados especfico variveis da coluna (por exemplo, n C o m p I d do tipo NMERO, d D a t e P a i d do tipo DATE/TIME, e assim por diante). Quando a aplicao introduz uma fileira dos dados na base de dados de Oracle, usa estas variveis dados-tipo-data-type-specific como as variveis do programa. Quando o usurio estala a insero, actualizar, suprimir, ou refrescar de teclas, as chamadas da aplicao uma funo apropriada do SAL para converter os dados associaram com cada varivel dinmica da coluna criaram p o r S a l T b l P o p u l a t e varivel especfica de uma coluna do NMERO ou do DATE/TIME. A aplicao usa estas variveis dados-tipo-data-type-specific da coluna como nomes variveis do ligamento na INSERO associada, na ACTUALIZAO, na SUPRESSO, ou na indicao SELETA. Para copiar dados de SQLBase a Oracle, a aplicao deve traar os tipos de dados da coluna de SQLBase aos tipos de dados de Oracle. Porque o SAL no tem nenhuma funo para obter o tipo de dados de cada coluna em uma tabela, a aplicao deve durohard-code os valores apropriados da indicao da TABELA da CRIAO que executa na base de dados do alvo (essa a que copia os dados). Por exemplo, a c o l u n a do retrato um mapa de bocado armazenado em SQLBase em uma coluna LONGA. Para armazenar estes dados em Oracle, a aplicao deve usar uma coluna CRUA LONGA.

Usurio de Microsoft SQL


Para copiar dados de SQLBase ao usurio de Microsoft SQL, a aplicao deve traar os tipos de dados da coluna de SQLBase aos tipos de dados do usurio de Microsoft SQL. Porque o SAL no tem nenhuma funo para obter o tipo de dados de cada coluna em uma tabela, a aplicao deve duro-hard-code os valores apropriados da indicao da TABELA da CRIAO que executa na base de dados do alvo (essa a que copia os dados).

Nveis e Oracle da isolao


Oracle no suporta o ajuste de nveis da isolao using o SQL dinmico. Por causa desta, voc tem duas maneiras de travar dados em uma tabela em Oracle: Travar a tabela inteira com a indicao da TABELA do FECHAMENTO. Travar determinadas fileiras com o SELETO... PARA a indicao da ACTUALIZAO. Travar uma tabela inteira muito desajeitado e arriscado. Ningum diferentes do usurio que tem fechado a tabela podem fazer todas as operaes na tabela at que estejam destravadas. Mesmo se a aplicao trava a tabela por somente um curto perodo de tempo, a penalidade paga por outros usurios geralmente inaceitvel elevada. Travar somente determinadas fileiras durante uma transao muito mais seletivo e
Connecting Gupta Objects to Databases

7-

Chapter 7

Connecting to Multiple Databases Concurrently

permite que outros usurios alcancem todos os dados na base de dados exceo das fileiras fechados. Entretanto, se

7-

Connecting Gupta Objects to Databases

o usurio que tem o fechamento toma um tempo longo terminar a transao, todos usurios restantes que precisam de alcanar esses dados forado para esperar. A aplicao de amostra favorece um alto nvel do acesso simultneo base de dados sobre um alto nvel da consistncia de dados no travando alguns dos dados da tabela de Oracle que alcana.

Autocommit
A aplicao de amostra desliga o autocommit para SQLBase, usurio de Microsoft SQL, e Oracle. A aplicao responsvel para cometer (ou rolar para trs) as operaes que compo uma transao. Voc pode encontr-la instrutivo para modificar a aplicao de amostra permitindo o autocommit e para observar como a aplicao funciona diferentemente. Quando a aplicao controlar suas prprias transaes, no controla as operaes em Oracle e no usurio de Microsoft SQL como uma nica transao distribuda. Em lugar de, a aplicao comete mudanas s tabelas da FACTURA e do INVOICE_ITEM (em Oracle) separada da tabela do PAGAMENTO (no usurio de Microsoft SQL). Por exemplo, se a consignao falha para a tabela do PAGAMENTO, a aplicao rola para trs no somente as mudanas na tabela do PAGAMENTO no usurio de Microsoft SQL, mas igualmente as mudanas nas tabelas da FACTURA e do INVOICE_ITEM em Oracle. Se a consignao sucede para a tabela do PAGAMENTO, a aplicao comete as mudanas s tabelas da FACTURA e do INVOICE_ITEM em Oracle igualmente. Se a consignao para aquelas tabelas falha, voc pode rolar para trs as mudanas naquelas tabelas, mas neste momento voc no pode ir para trs ao usurio de Microsoft SQL e rolar para trs a tabela do PAGAMENTO muda j cometido. Este trecho do cdigo mostra como as coordenadas da aplicao cometem (e rollback, se required) entre o usurio de Microsoft SQL e o Oracle:
Em SAM_Click ! Aprovar, cometer todas as mudanas. Se no bMSSQLServerAC Se cometer no usurio do MS SQL falha e o autocommit est,! rolar para trs o usurio e o Oracle de Microsoft SQL.
!

Se no SqlCommit (hMSSQLServer) Se SqlPrepareAndExecute (hMSSQLServer,' rollback') Chamada SalMessageBox (`das mudanas do usurio de Microsoft do `o SQL foi rolado com sucesso para trs', status', MB_Ok do
Connecting Gupta Objects to Databases

2-

Chapter 7

Connecting to Multiple Databases Concurrently

Rollback do `)

7-

Connecting Gupta Objects to Databases

Come mais informao

Se no bOracleAC Se SqlPrepareAndExecute (hOracle, "rollback ") Chamada SalMessageBox (as mudanas de Oracle do `eram o ` | | `rolado com sucesso para trs',' status do Rollback', retorno -1 de MB_Ok) Mais Chamada SalMessageBox (mudanas do usurio de Microsoft do `o SQL era o ` || o `cometido com sucesso', `comete o status', MB_Ok) ! Se a consignao era bem sucedida no usurio de Microsft SQL, executar! uma consignao em Oracle. Se a consignao falha, executar um rollback! em Oracle. NOTA: Voc no pode ir para trs ao usurio de Microsoft SQL! e rolar para trs as actualizaes se a consignao em Oracle falhou. Se no bOracleAC Se no SqlCommit (hOracle) Se SqlPrepareAndExecute (hOracle, "rollback ") Chamada SalMessageBox (as mudanas de Oracle do `eram com sucesso' `rolado para trs',' status', MB_Ok do Rollback) Retornar -1 Mais Chamada SalMessageBox ('as mudanas de Oracle eram com o `cometido',' comete o status', MB_Ok)

||

||

I m p o r t a n t e : Se voc comete com sucesso no usurio de Microsoft SQL, tentativa a cometer em

Oracle. Se a consignao em Oracle falha, voc pode fazer um rollback l, mas voc no pode rolar para trs as mudanas que voc cometeu no usurio de Microsoft SQL.

Come mais informao


Para mais informao sobre transaes, voc pode ler o processamento de transao: Conceitos e tcnicas por Jim Cinzento e por Andreas Reuter. Voc pode igualmente querer encontrar se seus usurios de base de dados podem segurar transaes distribudas using protocolos dos standards industriais tais como X/Open XA+. Se fazem, voc pode querer adotar aqueles protocolos using a caracterstica externa das funes da chamada de SQLWindows.

Glossrio
ligar a varivel variableA-Um que associa dados a uma indicao de SQL no tempo de execuo. Voc pode usar variveis do ligamento na clusula dos VALORES de uma indicao da INSERO, no ONDE clusula, ou na clusula do JOGO de uma indicao da ACTUALIZAO. commitThe- o ato da factura permanente durante mudanas de encontro a uma base de dados. espao de trabalho do cursorA-Um na memria que usada processando uma indicao de SQL. Este espao de trabalho contem o cdigo do retorno, o nmero de fileiras, a posio do erro, o nmero de artigos seletos da lista, o nmero de variveis do programa, a bandeira do rollback, e o resultado do comando. Um cursor pea de um punho do SQL. Alternativamente, um ponteiro a uma fileira em um jogo do resultado. Configurao da conectividade da DCC-Base de dados. Indicaes de DDL-SQL que definem e alteram estruturas de base de dados, tais como tabelas, vistas, e ndices. As indicaes do exemplo so CRIAM A TABELA e o NDICE da GOTA. As indicaes de DML-SQL que adicionam, suprimem, mudam, ou recuperam de dados da base de dados, tal como a INSERO, SUPRESSO, ACTUALIZAO, ou SELECIONAM-NOS. A definio de dados Lngua-Language see DDL. A manipulao de dados LnguaLanguagesee DML. - lido - sujo lido de um valor que fosse cometido nunca base de dados. Por exemplo, a

transao A muda uns ou vrios valores da coluna em uma fileira. A transao B l a mesma fileira, depois do qual a transao A rola para trs suas mudanas. A transao B tem executado agora um sujo - lido, porque leu os valores que (de uma transao o ponto de vista orientado) nunca existiu.

Connecting Gupta Objects to Databases

Glossary-1

Glossrio

nonrepeatable readThe- a leitura de dados de uma fileira dada tais que os valores lidos no esto garantidos para ser sempre os mesmos. Por exemplo, a transao A l uma fileira, a seguir a transao B actualiza ou suprime da fileira. A transao A no pode agora repetir lido dessa fileira e come os mesmos resultados; ou os valores so diferentes ou a fileira j no existe. fileira fantasma da rowA-Um que aparece entre duas execues da mesma indicao SELETA. Por exemplo, a transao A executa um SELETO em uma tabela. Baseado nos critrios de seleo na indicao SELETA, o usurio de base de dados retorna um jogo das fileiras s inseres da transao B do A. umas ou vrias fileiras novas na mesma tabela com valores que acontecem combinar os critrios de seleo da indicao SELETA usada pelo A.. Se a transao A executa a mesma indicao SELETA, obtem um jogo diferente das fileiras do que fz a primeira vez; as fileiras novas so fileiras fantasmas. ato do rollbackThe- de undoing durante mudanas de encontro a uma base de dados. SAL-SALSee a lngua evolutiva da aplicao. Lngua orientada ao objecto da LanguageAn-Um evolutiva da aplicao para aplicaes da escrita SQLWindows/32. O SQL handleA-Um a varivel do programa que identifica um contexto da conexo a uma base de dados. Os punhos mltiplos do SQL podem compartilhar da mesma conexo a uma base de dados. frequentemente verdadeiro que uma ao executada em qualquer uma daquelas segura afeta realmente todos os punhos que compartilham da mesma conexo. Ver igualmente o cursor. Biblioteca de software de SQLRouter-A que traa entre as aes e os tipos de dados de uma aplicao SQLWindows/32 e as aes e os tipos de dados de uma base de dados ou de uma origem de dados do alvo. unidade lgica da transactionA-Um de trabalho cujos os elementos (mudanas aos dados da base de dados ou s estruturas de dados da base de dados) pode ser potencial aplicado a uma base de dados. Os elementos de uma transao so ou toda aplicados base de dados ou ento todos os elementos discardedthe- de uma transao constituem uma unidade indivisible.

G l o s s a ry - 2

que conecta objetos de Gupta s bases de dados

Connecting Gupta Objects to Databases

Glossary-1

ndice
Smbolos
_ B I N 2 H E X _ 5-16 _ H E X _ 5-16

A
Acesso 95 conexo a 6-2 disposio que busca 4-5 audincia para este livro 1-10 autocommit 1-3-1-5, 3-2, 4-2, 5-2 CCP e 1-4 1-3 definido fechamentos e 1-3 desligando 1-4-1-5

B
parte posterior cursores 1-8 jogos do resultado 1-8 cursores backend. V e r i g u a l m e n t e cursores scrollable COMEAR A TRANSAO 5-2 GRANDE OBJETO BINRIO 4-17 as variveis do ligamento 5-3 definiram 1-5 espao em branco. V e r a proteco do espao dos dados 6-10 o buffrow 3-7, volume 6-10 executa 4-5

6-11 procurarar a ordem por 1-6-1-7 cometer DDL contra um espao de DML 1-10 de 1-4 Simultaneidade da clusula 5-4 do CLCULO no cdigo 1-5 do SAL que conectam etapas para seguir 2-2 que para verific primeiro 2-2-2-3 conexes erros que se levantam com 2-14 como testar 2-8 problemas com ordem da busca 2-11 para 1-6-1-7 aos parmetros de uma conectividade da base de dados 1-9 1-5 incluir a lima para o cursor 1-6 como o sinnimo para o punho 1-10 do SQL preservao do contexto do cursor. V e r o CCP

D
base de dados como especific using o SAL 2-10 as bases de dados suportaram 1-9 DB2 conexo a 1-10 DB2/400 conectando a 6-2, dBASE da autoridade 4-3 do DBA 6-3 conectando a 6-2 parmetros de DBP_* 1-5 DBP_AUTOCOMMIT 1-6 DBP_BRAND 1-6 DBP_LOCKWAITTIMEOUT 1-6, 5-20 DBP_PRESERVE 1-6 DBP_ROLLBACKONTIMEOUT 1-6 DBP_VERSION 1-6 adiaram a anlise gramatical de 4-8 sujo - lido introduzido 1-12 PL/SQL dinmico 4-4

C
CANCELAR O CANCELAMENTO 5-16 TODOS OS CCP 5-16 3-2, 42, 5-4, 6-4 cometer e 1-7 FERS e 1-8 rollback e 1-8 que giram sobre 1-7 transaes acorrentadas 5-2 VERIFICAO do OBJETO 4-17 do CARTER a GRANDE EXISTE a falha 516 cliente/usurio dos checkexists 5-16 1-2-1-3 descrito FECHAR no comdll 3-8 do closecursorateof 5-17 do transporte 5-4 da EXTREMIDADE, 4-6, 5-17,

E
corda vazia distinguir do ZERO e do espao 1-15 introduziu 1-15 cordas vazias 3-4, 4-4, 5-6
Connecting Gupta Objects to Databases

Index-

Index

enablemultipleconnections 5-18, 6-11 variveis de ambiente TRAJETO 2-6 cdigos de erro 6-6-6- 10 mensagens de erro como resolver 2-14

escrevendo e recuperando 5-37-540 o longbuffer 3-9, 4-8, 5-21, 6-12

F
FERS suprimindo de limas provisrias 1-9 1-8 introduzido actualizaes posicionadas e 1-9 liberando fechamentos compartilhados 1-9 SELECIONAR PARA A ACTUALIZAO com 1-9 fetchrow 4-6, 5-18 PARA CONSULTAR 5-14 PARA A ACTUALIZAO LONGA 5-16 jogos front-end do resultado. V e r FERS

H
punho. V e r o punho do SQL

I
ILogin.exe 2-2 Dados de IMAGEM introduzido 1-10 que escrevem 111 Informix registro 4-7 INMESSAGE 3-7 nveis da isolao 3-4, 4-4, 5-13 simultaneidade e 1-12 consistncia e 1-12 exemplo de como ajustar 1-14 como 1-12 definido introduziram 1-12

L
datatypes do GROSSEIRO em Oracle 4-11 travar o intervalo de parada 3-5, 4-5, 6-10 como permitir 1-14 locktimeout 1-14 introduzido 5-19 registrar 3-8, 4-7, 5-20, 612 dados LONGOS tamanho de amortecedor para 4-8 tamanho do amortecedor para 5-21, 6-12 truncamento de 2-11

autocommit 3-2 do usurio de Microsoft SQL buffrow 3-7 CCP 3-2 comdll 3-8 tipo de dados que traa 3-2 cordas vazias 3-4 Tipo intervalo de parada 3-5 da coluna da IDENTIDADE do fechamento dos nveis 3-4 da isolao de 3-4 registro 3-8 longbuffer 3-9 odbctrace nativo 3-9 do nvel 3-5 da conectividade 3-5 ODBC API 3-10 odbctracefile actualizaes posicionadas 3-6 procedimentos armazenados e 3-6 indicao AJUSTADA 3-6 da modalidade 3-6 ajustado do resultado Palavras-chaves do nvel 3-5 SQL.INI da gramtica do SQL 3-7-3-10 S q l D i r e c t o r y B y N a m e 3-7 procedimentos armazenados 311-3-20 criando 3-11 suprimindo de 3-12 cdigos de erro para a execuo 3-12 do cdigo 3-13 do exemplo 3-13 limitaes em 3-19 modalidade ajustada e 3-12 do resultado using palavras-chaves como nomes da tabela ou de coluna 3-5 autocommit 7-28 da aplicao da multi-base de dados aproximaes bsicas 7-2 simultaneidade e consistncia 7-12-7-15 7-4 configurando conectando aos usurios 7-5 suprimindo da descrio 7-3 das tabelas 7-6 formulrio 7-7 dos detalhes das edies de projeto 7-9-7-25

Index-

Connecting Gupta Objects to Databases

indicando os dados 7-6 da tabela, 7-19-720 emperramento dinmico 7-23

Connecting Gupta Objects to Databases

Index-

Index

tipo de dados dinmico que liga 7-26 gerncia dinmica das janelas da tabela 7-25 como conecta 7-9 como funcionar 7-4-7-9 transao 7-23 da FACTURA dos detalhes de execuo 7-25-7-29 nveis da isolao 7-13-7-15 nveis e Oracle da isolao 7-27 colunas chaves 7-21 travando estratgias 7-12 abertura ao autocommit de alterao 7-8 dos usurios 7-6 nveis de alterao da isolao 7-8 que povoam as tabelas 7-6 replicating o esquema dos esquemas e dos dados 7-15-7-19 da tabela e a posio do autocommit de ajuste 7-11 das tabelas 7-3 comeando 7-5 processamento de transao 7-2 17-23 dados de actualizao 7-25 da tabela execuo multithreaded, falta de 1-5

N
nodefparse 4-8 ZERO 1-12 introduzido lido nonrepeatable distinguir da corda vazia e do espao 1-15 introduziu 1-15

O
ODBC buffrow 6-10 comdll 6-11 do CCP 6-4 configurando uma origem de dados 2-3 conectando s origens de dados 6-2 conexo a SQLBase 6-3 tipo de dados que traa 6-4 cdigo de erro que traa 6-6 erro que processa 6-5 travar o intervalo de parada 6-10 registrar 6-12 chamadas de registo do API 2-12 longbuffer 6-12 odbctrace 6-13 6-13 odbctracefile Palavras-chaves de SQL.INI?? - 6-14
Index-

procedimentos armazenados 6-15 a lima de trao para chamadas do API 6-13 API de seguimento chama 3-9, 6-13 transaes, disconexes, e sadas 6-15 odbctrace 3-9, 6-13 3-10 odbctracefile, 6-13 OdrExecuteProc 3-14 OdrGetNextResults 3-15 OdrGetReturnStatus 3-16 OdrPrepareNextResults 3-18 OdrPrepareProc 3-17 Oracle alcanando o sistema explicar a disposio 2-9 que busca 4-5 autocommit 4-2 o volume executa 4-5 CCP 4-2 comdll 4-6 conexo using o tipo de dados das condies prvias 2-9-2-10 da conexo de ODBC 6-2 que traa 4-3 adiado analisando gramaticalmente 4-8 PL/SQL dinmico 4-4 cordas vazias 4-4 fetchrow 4-6 nveis da isolao 4-4 travar o intervalo de parada 4-5 longbuffer 4-8 modificando o nodefparse 4-8 do registro 2-9 de Windows trfego de mensagem de aperfeioamento 4-5 actualizaes posicionadas 4-5 remotedbname 3-10, 4-9, modalidade ajustada 4-5 do resultado 6-14 Palavras-chaves de SQL.INI?? - 4-11 SqlPLSQLCommand 4-13 procedimentos armazenados 4-12-4-16 os tipos de dados suportaram 4-12 disposies dinmicas 4-15 exemplo 4-13-4-15 sobrecarregando 4-12 substituto 4-10 as transaes, as disconexes, e a opinio das sadas 4-16 scripts para alcanar procedimentos armazenados 2-9 certificados da vista s tabelas do acesso 2-9 dados CRUS

Connecting Gupta Objects to Databases

de escrita 4-16-4-18

Connecting Gupta Objects to Databases

Index-

Index

P
parmetros autocommit 1-6 vendedor da base de dados da preservao 1-6 do contexto do cursor 1-6 verso 1-6 da base de dados travar o intervalo de parada 1-6 da espera rollback no intervalo de parada 1-6 Fileira fantasma da varivel de ambiente 2-6 do TRAJETO introduzido 1-13 actualizaes posicionadas 3-6, 4-5 codificando 1-17 cdigo 1-18 do exemplo declaraes preparadas executando 3-2, 4-2, 5-4, 6-4

R
RAISERROR 5-7 Dados CRUS escrevendo 4-16-418 notas de liberao o que contm 2-12 o remotedbname 3-10, 4-9, 5-21, 6-14 ordem da busca para 1-6-1-7 a modalidade ajustada 36 do resultado, valor de defeito 4-5 1-18 como desligar 1-19 como girar sobre 1-19 implicaes de 1-18 introduziu 1-18

estrutura de 2-6 quando se ler 2-7 SQL_TXN_READ_COMMITTED 3-4 SQL_TXN_READ_UNCOMMITTED 3-4 SQL_TXN_REPEATABLE_READ 3-4 SQL_TXN_SERIALIZABLE 3-4 SQLBase conexo a 1-10 conexo a usar ODBC 6-3 SqlConnect 1-9 SqlDirectoryByName 3-7 SQLGateway 1-10 Parmetros de SqlGetParameter 15 SqlGetResultSetCount 1-9 SQLHost 1-10 SQLHost para Visual Basic SqlLockWaitTimeout 1-10 5-20 SQLNetwork para DB2 1-10 SQLNWKCN.APL 1-6 SqlPLSQLCommand 4-13 SQLRouters lista de 1-2 rAll 1-14 dos parmetros 1-5 SqlSetParamete de SqlSetIsolationLevel SqlSetLongBindDatatype 1-11

SqlSetParameter

S
aplicaes de amostra 2-15-?? os cursores scrollable 3-6 definiram 1-8 espao distinguir da corda NULA e vazia 1-15 introduziu 1-15 Punhos do SQL 1-9 introduzido nmero mximo de 1-10 espao e 1-10 da transao using mais de um 1-10 SQL*Plus 2-2 Lima 2-5-2-7 2-7 de edio de SQL.INI trajeto de busca para 2-5

uso do exemplo de 1-6 SQLTalk conexo do teste com os 2-8 procedimentos armazenados de SQLWNTM.DLL 2-13 6-15 introduzido 1-21 substituto 4-10, 5-22 sybapplicationname 5-23 Sybase. Ver o sybautocommit 5-23 do sistema 10 SybExecuteProc 5-29 SybExecuteProcEx 5-30 SybGetClientMsg 5-8 SybGetClientMsgCount 5-8 SybGetNextClientMsg 5-9 SybGetNextResults 5-31 SybGetNextServerMsg 5-11 SybGetReturnStatus 5-32 SybGetServerMsg 5-10 SybGetServerMsgCount 5-10 sybmaxmessages 5-24 SybPrepareNextResults 5-34

Index-

Connecting Gupta Objects to Databases

SybPrepareProc 5-33

mensagens da economia 5-24

SYBPRIVS.EXE 2-8 sybtracefile 5-25 sybworkstationname 5-25 SybWriteText 5-39 Sistema 10 autocommit 5-26 5-2, 5-23 variveis do processamento assncrono do ligamento 5-3 CANCELAR 5-28 CCP 5-4 transaes acorrentadas 52 checkexists 5-16 nome de aplicao 5-23 do cliente o cursor prximo da facilidade 525 do trao da Cliente-ClientLibrary do nome 5-25 da mquina de cliente em extremidade--end-offetch 5-17 o comdll 5-17 do closecursorateof 5-17 Condies prvias da conexo da clusula 5-4 do CLCULO 2-8 tipo de dados que traa 5-5-5-6 cordas vazias 5-6 enablemultipleconnections 518, 6-11 erro 30041 5-28 precedncia 5-7 do erro erro que processa 5-6-5-12 o fetchrow 5-18 come a conexes novas 5-18, 6-11 punhos e conexes 5-13 dados de IMAGEM tamanho de amortecedor para 5-38 escrevendo e recuperando o locktimeout 5-19 dos nveis 5-13 da isolao 5-37-5-40 registro 5-20 espera 5-19 do incio de uma sesso longbuffer 5-21 as fileiras mximas por conexes do mltiplo do esforo 5-18 5-12 posicionaram as actualizaes 5 - 14-5-15 fetchrow e 5-15 RAISERROR 5-7 liberar-se trava 5-16 cordas reservados do remotedbname 521 5-16 mensagens de recuperao 5-8-5-12
Connecting Gupta Objects to Databases

Index-

Index

especific palavras-chaves do nome de base de dados 5-21 SQL.INI 5-16-5-27 procedimentos armazenados da espera 5-19 da execuo da indicao 5-27-?? cancelando jogos do resultado 5-28 recuperando argumentos da sada 5-35 using cursores 5-27 substituto 5-22 sybapplicationname 5-23 sybautocommit 5-23 SybExecuteProc 5-29 SybExecuteProcEx 5-30 SybGetNextResults 5-31 SybGetReturnStatus 5-32 sybmaxmessages 5-24 SybPrepareNextResults 534 SybPrepareProc 5-33 sybtracefile 5-25 dados do TEXTO do sybworkstationname 5-25 tamanho de amortecedor para 5-38 escrevendo e recuperando o tipo de dados 5-5 do timestamp 5-37-540 transaes, disconexes, e yieldonservercall 5-26 das sadas 5-36 Sistema 11.. Ver o sistema 10

espao de trabalho 5-28 excedeu o erro 5-38

Y
yieldonservercall 5-26

T
suporte laboral contatando 2-13 transaes introduzido 1-22 problemas da pesquisa de defeitos 2-10-2-14 convenes tipogrficas 1-11

U
uselob 4-11

V
certificados da vista como funcionar 2-10

W
COM CURSOR 5-16, o limite do
IndexConnecting Gupta Objects to Databases

Objetos de conexo de Gupta s bases de dados

Index-7