Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Sql cache

Читайте также:
  1. ReadyBoost configurera le cache automatiquement

Эта сист поддерживает все элементы амер института. Эти элементы можно разделить на 3 основные области:

1) DOL – язык используется для запросов

2) DML(data manipulation language) – язык для обработки данных

3) DDL(DATA definitional language) – для определения структур данных

Кроме этого имеются

4) TCL – для управления транзакциями

5) DCL(DATA CONTROL LANGUAGE) – для регулирования доступа данных и использования правил доступа данных

В первой группе DOL относится к SQL

SELECT * | { [DISTINCT | ALL] выражения, …. }

FROM { имя таблицы [Псевдонимы] }, ….

[WHERE логическое выражения. ]

[GROUP BY {имя столб / целое число}, ….]

[HAVING лог. выражения]

[ORDER BY {имя столбца | целое число }, …]

DML

INSERT INTO имя таблицы [(имя столбца …)]

{VALUES (выражения, …)}

(Запрос)

INSERT INTO USER.PERSON (SURNAME, NAME)

VALUES(“Петров”,”Иван”)

UPDATE имя таблицы

SET имя столбца = выражению, …

[WERE логическое выражения]

UPDATE USER.PERSON

SET Surname = “Степанов”,

Name = “Александр”

WHERE ID = 42

DELETE FROM имя таблицы

[WHERE логическое выражения]

DELETE FROM USER.PERSON

WHERE ID = 42

DATA definitional language (DDL)

 

CREATE TABLE имя таблицы

(Имя таблицы Тип данных [(Размер)] [Not NULL], …)

ALTER TABLE имя таблицы

{DROP имя столбца}

| {ADD имя столбца Тип данных [(Размер)]} []Not NULL]}

| {MODIFY имя столб Тип данных [(Размер)] [Not NULL]}

DROP TABLE имя таблицы // удаляет описания таблицы с потерей всех данных

 

CREATE VIEW Имя представления [(Имя столб), …] AS запрос

DROP VIEW имя представления // удаляет представления

ALTER VIEW имя представления [(Имя столб), …] AS Запрос

 

CREATE [UNIQUE] INDEX Имя индекса

ON имя табл (имя столб, …)

ALTER [UNIQUE] INDEX Имя индекса

ON Имя табл (Имя столб, …)

DROP INDEX Имя индекса

DO $System.Securitg.Login(“_System”,”SYS”)

VIEW SQLCODE, %msg

& sql (CREATE TABLE Employee (

EMPNUM, INT NOT NULL,

NAME LOAST CHAR(30) NOT NULL,

…..

COMSTRAINT EMPLOUYEEPK PRIMARY KEY (EMPNUM)

)

IF SQLCODE = 0

{ write!, “Таблиця созданна”}

ELSE

{ W!, “SQLCODE: = ”, SQLCODE, “: ”, % msg }

SET g1 = “SELECT TOP 10 P.Name AS pn,E.Name AS en”

SET g2 = “ FROM SAMPLE.PERSON AS P,SAMPLE.EMPLOYER AS E”

Set myquery = g1 – g2

SET rset = #class(%RESULTSet).%New(“%DYNAMICQUERY:SQL”)

SET sc = rset.PREPARE(myquery)

SET = sc = rset.EXECUTE()

WHILE rset.NEXT()

{W!, rset.Data(“pn”),!, rset.Date(“en”) SET IDPERS = rset.Data(“ID”)}

W!, “Row count = ”, %ROWCOUNT

Передача параметров:

SET = myquery = “SELECT ID, Name, Age FROM Sample.Person WHERE Age >? AND Age <?”

SET rset = #class(%ResultSet.SQL).%Prepare(myquery.err,” “, e1, 26)

WHILE rset.NEXT()

{ W!, rset.Name, “, “, rset.Age}

24.04.2015

SET sql = 3

SET sql(1) = “DECLARE @vaz INT”

SET sql(2) = “SET @vaz = 4”

SET sql(3) = “SELECT TOP @vaz Name, Age FROM Sample.PERSON”

SET statement = ##class(%SQL.Statement).%New()

SET statement.%Dialect = “MSSQL”

SET status = statement.%Prepare(.sql)

SET result =statement.%Execute()

В терминале прописуем:

DO result.%Display()

В результате, то что получается в терминале:

NAME AGE
Сидоров  
Петров  

2Rows Affect

Пример

 

S tSQL = 3

S tSQL(1) = “select %ID os id, Name, DOB, Home_State as Home, Age”

S tSQL(2) = “FROM Sample.PERSON WHERE Age >? AND Home [?’

S tSQL(3) = “ORDER BY 2”

S tStat(3) = $$class(%SQL.Statmeny).%New()

S tStatus = tStat.%Prepare(.tSQL)

S tRes = tStat.%Execute(50, “VT”)

WHILE tRes.%Next()

{

W!, “Имя”, tRes.Name, “ Home”,tRes.Home, “ Возраст”.tRes.Age, “ День рождения”,$zdt(tRes.DOB,4)]

Терминал

Do tRes.%Display()

Id Name DOB Home
  Сидоров П.П. 9/4/1969 VT
  Петров Л.П. 8/12/2003 VT

 

Если у нас сформирован запрос в классе то можно использовать такое:

SET tSp = ##class(%SQL.Statment).%New()

SET tStatus = tsp.%PrepareClassQuery(“Sample.Person”, “Doctest”)

SET tRes = tSp.%Execute()

WHILE tRes.%Next()

{

…..

}

 

Пример 6

Непесредственно указан сам запрос

S tRes = ##class(%SQL.Statment).%ExecDirect(.tStatment,”select Name, Age, FROM Sample.Person WHERE Age >? AND Name =?”, 50, “ Александр”)

Терминал

DO tRes.%Display()

 

Property Age AS %Integer [Calculateed, SqlComputCode = {

Set {Age} /*необходимо записать значения*/ = ##class(Sample.Person).CurrentAge({DOB})},

SQLComputed, SqlChange = DOB];

ClassMethod CurrentAge(date AS %Date = “”) AS %Interger [CODE MODE = expression]

{

$Select(date = “”: “”, 1: ($zd($h, 8) - $D(date, 8) \ 10000))

}

 

 


Дата добавления: 2015-08-09; просмотров: 62 | Нарушение авторских прав


Читайте в этой же книге: Информация, данные информационной системы | Информационные системы | Основные подходы по обработки информационных автоматизированных систем | Классификация модели | Сетевая модель данных | Иерархическая модель данных. | Правила вывода функциональных зависимостей | Нормальные формы схем отношений |
<== предыдущая страница | следующая страница ==>
Реляционная алгебра| Площадь 81 м2 , ЦЕНА: 810 т.руб. Площадь: 99 м2 , ЦЕНА: 950 т.руб

mybiblioteka.su - 2015-2024 год. (0.007 сек.)