powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как получить сгенерированный sql-query OracleCommand
9 сообщений из 9, страница 1 из 1
Как получить сгенерированный sql-query OracleCommand
    #38117420
MasterOfCode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
OracleConnection oracleConnection = new OracleConnection("Data Source=src;User Id=usr;Password=pwd;");
string sql = "select field1 from field2=:p1";
OracleCommand cmd = new OracleCommand(sql, oracleConnection);
OracleDataReader oracleDataReader;
using (oracleConnection)
{
    oracleConnection.Open();
    cmd.Parameters.Add("p1", OracleDbType.Int32, ParameterDirection.Input).Value=1;
    oracleDataReader = cmd .ExecuteReader(); //возвращает пустой набор
}


Как мне посмотреть какой он запрос сгенерировал (включая параметры) и отправил на сервер?
...
Рейтинг: 0 / 0
Как получить сгенерированный sql-query OracleCommand
    #38117436
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак. Команды не реализуют такого функционала.
...
Рейтинг: 0 / 0
Как получить сгенерированный sql-query OracleCommand
    #38117552
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterOfCode
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
OracleConnection oracleConnection = new OracleConnection("Data Source=src;User Id=usr;Password=pwd;");
string sql = "select field1 from field2=:p1";
OracleCommand cmd = new OracleCommand(sql, oracleConnection);
OracleDataReader oracleDataReader;
using (oracleConnection)
{
    oracleConnection.Open();
    cmd.Parameters.Add("p1", OracleDbType.Int32, ParameterDirection.Input).Value=1;
    oracleDataReader = cmd .ExecuteReader(); //возвращает пустой набор
}


Как мне посмотреть какой он запрос сгенерировал (включая параметры) и отправил на сервер?
Кто Вам сказал, что он что-то должен генерировать?
Что Вы ему написали - то он и отправил.
...
Рейтинг: 0 / 0
Как получить сгенерированный sql-query OracleCommand
    #38117593
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Генерации на самом деле никакой не происходит, просто подстановка параметров с определенным форматированием. Всё это скрыто в реализации и никакие опубликованные методы для получения общей строки запроса после подстановки параметров не предоставляется.
...
Рейтинг: 0 / 0
Как получить сгенерированный sql-query OracleCommand
    #38117600
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или речь о профайлере со стороны сервера БД? Тогда это в другой форум, оракл.
...
Рейтинг: 0 / 0
Как получить сгенерированный sql-query OracleCommand
    #38117714
MasterOfCode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУГенерации на самом деле никакой не происходит, просто подстановка параметров с определенным форматированием. Всё это скрыто в реализации и никакие опубликованные методы для получения общей строки запроса после подстановки параметров не предоставляется.
Жаль конечно. Придется оракл трассировать.
...
Рейтинг: 0 / 0
Как получить сгенерированный sql-query OracleCommand
    #38117723
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterOfCodeМСУГенерации на самом деле никакой не происходит, просто подстановка параметров с определенным форматированием. Всё это скрыто в реализации и никакие опубликованные методы для получения общей строки запроса после подстановки параметров не предоставляется.
Жаль конечно. Придется оракл трассировать.
Используй ORM, а не эти унылые команды с ридерами. ORM умеют снимать трассу сгенеренного запроса.
...
Рейтинг: 0 / 0
Как получить сгенерированный sql-query OracleCommand
    #38118209
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterOfCode,

Код: sql
1.
GRANT ALTER SESSION TO "SCOTT"



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Oracle.DataAccess.Client;

namespace ConsoleApplication19
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var connection = new OracleConnection("Data Source=oradb;User ID=scott;Password=pass"))
            {
                connection.Open();

                string startTraceCmdText = @"alter session set sql_trace=true";

                using (var cmd1 = new OracleCommand(startTraceCmdText, connection))
                {
                    var z = cmd1.ExecuteNonQuery();
                }

                string sqlCommand = @"select * from emp where empno=:p_empno";

                using (var cmd3 = new OracleCommand(sqlCommand, connection))
                {
                    cmd3.Parameters.Add(":p_empno", 7369);
                    var reader = cmd3.ExecuteReader();

                    while (reader.Read())
                        Console.WriteLine("{0} - {1}", reader["empno"], reader["ename"]);
                }

                string stopTraceCmdText = @"alter session set sql_trace=false";

                using (var cmd4 = new OracleCommand(stopTraceCmdText, connection))
                {
                    cmd4.ExecuteNonQuery();
                }
            }
        }
    }
}



Ловить трейс там

C:\app\oracle\diag\rdbms\oradb\oradb\trace\oradb_ora_4284.trc

Потом

Код: sql
1.
tkprof oradb_ora_4284.trc out.txt explain=scott/pass sys=no



out.txt
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
TKPROF: Release 11.2.0.1.0 - Development on Mon Jan 21 15:36:33 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Trace file: oradb_ora_4284.trc
Sort options: default

********************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing 
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call
********************************************************************************

SQL ID: 4tk6t8tfsfqbf
Plan Hash: 0
alter session set sql_trace=true


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        1      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 84  (SCOTT)
********************************************************************************

SQL ID: aaqv6djvutmqa
Plan Hash: 2949544139
select * 
from
 emp where empno=:p_empno


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1      0.00       0.00          0          2          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.00       0.00          0          2          0           1

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 84  (SCOTT)

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  TABLE ACCESS BY INDEX ROWID EMP (cr=2 pr=0 pw=0 time=0 us cost=2 size=87 card=1)
      1   INDEX UNIQUE SCAN PK_EMP (cr=1 pr=0 pw=0 time=0 us cost=1 size=0 card=1)(object id 73197)


Rows     Execution Plan
-------  ---------------------------------------------------
      0  SELECT STATEMENT   MODE: ALL_ROWS
      1   TABLE ACCESS (BY INDEX ROWID) OF 'EMP' (TABLE)
      1    INDEX (UNIQUE SCAN) OF 'PK_EMP' (INDEX (UNIQUE))

********************************************************************************

SQL ID: aam2chsgpj7mb
Plan Hash: 0
alter session set sql_trace=false


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       0.00          0          0          0           0

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 84  (SCOTT)



********************************************************************************

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        2      0.00       0.00          0          0          0           0
Execute      3      0.00       0.00          0          0          0           0
Fetch        1      0.00       0.00          0          2          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        6      0.00       0.00          0          2          0           1

Misses in library cache during parse: 1
Misses in library cache during execute: 1


OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute      0      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        0      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0

    3  user  SQL statements in session.
    0  internal SQL statements in session.
    3  SQL statements in session.
    1  statement EXPLAINed in this session.
********************************************************************************
Trace file: oradb_ora_4284.trc
Trace file compatibility: 11.1.0.7
Sort options: default

       1  session in tracefile.
       3  user  SQL statements in trace file.
       0  internal SQL statements in trace file.
       3  SQL statements in trace file.
       3  unique SQL statements in trace file.
       1  SQL statements EXPLAINed using schema:
           SCOTT.prof$plan_table
             Default table was used.
             Table was created.
             Table was dropped.
      42  lines in trace file.
       0  elapsed seconds in trace file.


...
Рейтинг: 0 / 0
Как получить сгенерированный sql-query OracleCommand
    #38118236
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterOfCode,

Интересно, а как оно без ошибок могло отработать?
Код: plsql
1.
string sql = "select field1 from field2=:p1";



Код: plsql
1.
select field1 from /* а где табличка? */ field2=:p1
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как получить сгенерированный sql-query OracleCommand
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]