4D v16Procedimentos armazenados |
||
|
4D v16
Procedimentos armazenados
Procedimentos armazenados
O termo "Procedimento armazenado" vem do mundo dos servidores SQL. Quando uma estação de cliente envia uma solicitação para um servidor SQL, ele na verdade envia texto em linguagem SQL ao servidor SQL. Este pedido é sintaticamente (parsing) e é executado no servidor SQL antes de executá-lo. Obviamente, se o texto do pedido é importante, e se a solicitação é enviada várias vezes durante uma sessão, você pode levar um longo tempo enviar o código na rede, a análise e a interpretação do pedido. Assim, a idéia era encontrar uma maneira de enviar o pedido através da rede, analisados e interpretados uma vez e, em seguida, unicamente executado cada vez que receba de uma estação cliente. A solução foi preservar o código fonte do pedido (em outras palavras, um procedimento) no servidor e que o cliente envie uma solicitação com apenas o nome do procedimento para executar. O procedimento é, portanto, "guardado" no servidor e daí vem o termo "procedimento armazenado." Observe que um procedimento armazenado SQL é um procedimento que pode receber parâmetros de uma estação cliente, execute as tarefas para as quais foi criado (de forma síncrona ou assíncrona) e possivelmente retornar um resultado para o cliente. Quando um cliente solicita a execução de um procedimento armazenado, em certa medida, ele delega a execução do código no computador do servidor. Ainda que utilizamos o termo utilizado na indústria, as funções dos procedimentos armazenados de 4D Server superam significativamente o conceito regular de procedimentos armazenados. Com 4D em modo local, quando utiliza um comando como New process, pode abrir um processo usuário no qual pode executar um método. Este método é chamado um método processo (ver a seção Métodos de projeto no manual Linguagem de 4D). Pode fazer o mesmo com 4D Server, em um computador cliente. Além disso, utilizando o comando Execute on server na máquina servidor, pode iniciar um processo de usuário na qual executar um método. Além disso, utilizando o comando EXECUTE ON CLIENT, pode correr um método em outro processo em um cliente diferente. Importante: A diferença principal entre um procedimento armazenado SQL e um procedimento armazenado 4D Server como no primeiro caso você executa um procedimento SQL, no segundo caso, execute um processo 4D autônomo. Como um processo 4D normal, um procedimento armazenado tem seu próprio ambiente:
Em términos de interface de usuário, um procedimento armazenado pode abrir janelas e mostrar dados (DISPLAY RECORD). Pode iniciar tantos procedimentos armazenados como autorize o sistema (hardware e memória). Na verdade, a máquina servidor deve ser considerada como uma máquina que não só responde aos clientes 4D e aos navegadores web, e também é capaz de executar processos que interagem com outros processos que passam na máquina servidor e nas máquinas remotas. Da mesma forma que 4D oferece um entorno multitarefas aos processos usuário que passam na máquina, 4D Server oferece um entorno multitarefas aos procedimentos armazenados. Por exemplo, 4D Server mantém uma tabela das variáveis interprocesso que podem ser utilizadas pelos processos armazenados para que se comuniquem entre eles. Nota: A propriedade de método "Executar em servidor" permite executar um método em um processo no servidor, mas o método utiliza um processo "twinned" do processo cliente, que lhe permite em particular ser beneficiado do ambiente deste processo cliente. Neste caso, não é um procedimento armazenado 4D. Para maior informação, consulte a seção Executar no atributo servidor. Grande parte das funções dos processos e comandos descritas no manual de Linguagem 4D aplicam também aos procedimentos armazenados, exceto pela entrada de dados para os procedimentos armazenados executados no servidor. Um procedimento armazenado pode adicionar, pesquisar, ordenar, atualizar ou apagar registros. Um procedimento armazenado pode utilizar conjuntos e seleções temporais, acessar a documentos no disco, trabalhar com BLOBs, imprimir registros, etc. Pense simplesmente que no lugar de fazer algo na máquina 4D local, ele faz na máquina servidor ou em várias máquinas clientes. Uma vantagem evidente dos procedimentos armazenados executados no servidor é que precisamente um procedimento armazenado se executa na máquina servidor, aonde se encontra o motor da base de dados. Por exemplo, um APPLY TO SELECTION não é eficiente na rede, mas é ao interior de um procedimento armazenado. O exemplo proposto na seção Importação baseada nos procedimentos armazenados (exemplo) mostra a importante otimização do rendimento que pode alcançar implementando um procedimento armazenado. Os procedimentos armazenados executados em um ou várias máquinas clientes permitem otimizar a otimização da repartição de tarefas entre clientes e a comunicação entre várias máquinas clientes. Consulte o comando REGISTER CLIENT no manual de Linguagem para ver um exemplo de procedimentos armazenados executados em várias máquinas clientes. No entanto, a vantagem principal da arquitetura dos procedimentos armazenados é a dimensão adicional que da a 4D Server. Utilizando procedimentos armazenados pode implementar seus próprios serviços 4D Server. O único limite é sua imaginação. O exemplo na seção Importação baseada nos procedimentos armazenados (exemplo) mostra um procedimento armazenado que oferece informação sobre 4D Server a seus clientes. Pode, por exemplo, listar os volumes da máquina servidor. Este exemplo pode ser expandido facilmente para reenviar a informação sobre os diretórios ou documentos ao cliente. Geralmente, os procedimentos armazenados executados no servidor não devem realizar operações que impliquem elementos de interface (tal como menus, janelas, formulários...). Os mecanismos de gestão de interface não são lidados no servidor. Esta é a lista de comandos que NÃO deve utilizar em procedimentos armazenados executados no servidor. Estes comandos se classificam em três categorias:
ACCUMULATE ADD RECORD _o_ADD SUBRECORD APPEND MENU ITEM BREAK LEVEL CALL PROCESS CHANGE LICENSES Count menu items Count menus CREATE USER FORM DELETE MENU ITEM DELETE USER FORM DISABLE MENU ITEM DISPLAY SELECTION EDIT ACCESS EDIT FORM ENABLE MENU ITEM FILTER EVENT Get menu item Get menu item key Get menu item mark Get menu item style Get menu title SET PICTURE TO LIBRARY _o_GRAPH TABLE INSERT MENU ITEM Level LIST USER FORMS Menu selected MODIFY RECORD MODIFY SELECTION _o_MODIFY SUBRECORD ON EVENT CALL _o_Open external window PAGE BREAK PAGE SETUP PRINT SETTINGS QUERY BY EXAMPLE QR REPORT Printing page REMOVE PICTURE FROM LIBRARY SET MENU ITEM SET MENU ITEM SHORTCUT SET MENU ITEM MARK SET MENU ITEM STYLE SET PICTURE TO LIBRARY SHOW MENU BAR Subtotal • Comandos inapropriados no servidor A utilização destes comandos em procedimentos armazenados não é recomendável como seu funcionamento não se adapta a uma execução no servidor. Estes comandos podem ser bloqueados pelo servidor, provocar erros e não produzem os efeitos esperados. Não é devolvido um código de erro específico.ACCEPT Activated _o_ADD DATA SEGMENT After APPEND DATA TO PASTEBOARD APPEND TO LIST Before BLOB TO DOCUMENT BLOB to list BRING TO FRONT _o_C_GRAPH CANCEL CHANGE CURRENT USER CHANGE PASSWORD CLEAR LIST CLEAR PASTEBOARD Copy list Count list items Count screens Create document(1) _o_Create resource file(1) Current form table Current user Deactivated DELETE FROM LIST DELETE USER DIALOG _o_DISABLE BUTTON DRAG AND DROP PROPERTIES DRAG WINDOW Drop position _o_During _o_ENABLE BUTTON ERASE WINDOW EXPORT DATA(1) FILTER KEYSTROKE Find window Focus object FONT LIST _o_Font name _o_Font number Form event FIRST PAGE FORM Get current page FORM GET PROPERTIES FORM GOTO PAGE LAST PAGE NEXT PAGE PREVIOUS PAGE FORM SET INPUT FORM SET OUTPUT Frontmost process Frontmost window Get edited text GET GROUP LIST GET GROUP PROPERTIES GET HIGHLIGHT GET LIST ITEM GET LIST ITEM PROPERTIES GET LIST PROPERTIES GET MOUSE GET PASTEBOARD DATA GET PICTURE FROM PASTEBOARD Get text from pasteboard GET USER LIST GET USER PROPERTIES GET WINDOW RECT Get window title GOTO OBJECT GRAPH SETTINGS HIDE PROCESS HIDE TOOL BAR HIDE WINDOW HIGHLIGHT RECORDS HIGHLIGHT TEXT IMPORT DATA(1) In break In footer In header INSERT IN LIST _o_INVERT BACKGROUND Is a list Is user deleted Keystroke List item parent List item position LIST TO BLOB Load list MAXIMIZE WINDOW Menu bar height Menu bar screen MINIMIZE WINDOW Modified New list Next window OBJECT GET COORDINATES OBJECT MOVE OBJECT SET LIST BY NAME OBJECT SET COLOR OBJECT SET ENTERABLE SET FILTER OBJECT SET FORMAT OBJECT SET RGB COLORS OBJECT SET TITLE OBJECT SET VISIBLE Old Open document(1) Open resource file(1) ORDER BY(2) Outside call Pasteboard data size Pop up menu POST CLICK POST EVENT POST KEY QUERY BY FORMULA(2) QUERY(2) REDRAW _o_REDRAW LIST REDRAW WINDOW REGISTER CLIENT REJECT SAVE LIST SCREEN COORDINATES SCREEN DEPTH Screen height Screen width Select folder SELECT LIST ITEMS BY POSITION SELECT LIST ITEMS BY REFERENCE SELECT LOG FILE Selected list items Self SET CURSOR SET FIELD TITLES Set group properties SET LIST ITEM SET LIST ITEM PROPERTIES SET LIST PROPERTIES SET PICTURE TO PASTEBOARD SET SCREEN DEPTH SET TABLE TITLES SET TEXT TO PASTEBOARD SET TIMER Set user properties SET WINDOW RECT Shift down SHOW PROCESS SHOW WINDOW SORT LIST User in group Validate password Window kind WINDOW LIST Window process (1) Unicamente quando o primeiro parâmetro é uma cadeia vazia. (2) Unicamente quando a sintaxes utilizada provoca a aparição da caixa de diálogo (ex.: ORDER BY([Table])).
GRAPH MESSAGES OFF MESSAGES ON SET MENU BAR SHOW TOOL BAR
Pode executar em 4D Server ou em outra máquina 4D client. Note que para as máquinas clientes 4D nesta lista, devem ter sido registrados (ver a seção Procedimentos armazenados nas máquinas clientes e o comando REGISTER CLIENT).
Nota: Não é possível utilizar os comandos de gestão de processos DELAY PROCESS, PAUSE PROCESS e RESUME PROCESS desde um 4D remoto com procedimentos armazenados no servidor.
Os procedimentos armazenados podem comunicar-se entre eles utilizando:
Consulte as seções correspondentes do manual Linguagem de 4D. Novamente, lembre que os comandos 4D atuem dentro do alcance da máquina que executa o procedimento armazenado (servidor ou clientes) da mesma forma que no local em uma máquina cliente. Nota: Os mecanismos CALL PROCESS e Outside call não tem significado na máquina servidor, porque os procedimentos armazenados não tem uma interface usuário com entrada de dados. Também há outra funcionalidade importante: os processos usuário dos clientes (processos que passam em uma máquina cliente) podem ler e escrever as variáveis processo (*) de um procedimento armazenado, utilizando os comandos GET PROCESS VARIABLE, SET PROCESS VARIABLE e VARIABLE TO VARIABLE. (*) Assim como as variáveis interprocesso da máquina servidor. Importante: A comunicação processo “Inter máquina”, oferecida pelos comandos GET PROCESS VARIABLE, SET PROCESS VARIABLE e VARIABLE TO VARIABLE, somente é possível o fechamento cliente ao servidor. Sempre é um processo cliente que lê ou escreve as variáveis de um procedimento armazenado.
Ver também
Importação baseada nos procedimentos armazenados (exemplo)
|
PROPRIEDADES
Produto: 4D
HISTÓRIA
ARTICLE USAGE
Manual de 4D Server ( 4D v16) |