1. 新手自學,,請問PL/sql 怎麼進sql查詢編輯器 具體步驟!先謝了
一、本地動態SQL
本地動態SQL是使用EXECUTE IMMEDIATE語句來實現的。
1、本地動態SQL執行DDL語句:
需求:根據用戶輸入的表名及欄位名等參數動態建表。
create or replace procere proc_test
(
table_name in varchar2, --表名
field1 in varchar2, --欄位名
datatype1 in varchar2, --欄位類型
field2 in varchar2, --欄位名
datatype2 in varchar2 --欄位類型
) as
str_sql varchar2(500);
begin
str_sql:=』create table 』||table_name||』(』||field1||』 』||datatype1||』,』||field2||』 』||datatype2||』)』;
execute immediate str_sql; --動態執行DDL語句
exception
when others then
null;
end ;
以上是編譯通過的存儲過程代碼。下面執行存儲過程動態建表。
SQL> execute proc_test(』dinya_test』,』id』,』number(8) not null』,』name』,』varchar2(100)』);
PL/SQL procere successfully completed
SQL> desc dinya_test;
Name Type Nullable Default Comments
---- ------------- -------- ------- --------
ID NUMBER(8)
NAME VARCHAR2(100) Y
SQL>
到這里,就實現了我們的需求,使用本地動態SQL根據用戶輸入的表名及欄位名、欄位類型等參數來實現動態執行DDL語句。
2、本地動態SQL執行DML語句。
需求:將用戶輸入的值插入到上例中建好的dinya_test表中。
create or replace procere proc_insert
(
id in number, --輸入序號
name in varchar2 --輸入姓名
) as
str_sql varchar2(500);
begin
str_sql:=』insert into dinya_test values(:1,:2)』;
execute immediate str_sql using id,name; --動態執行插入操作
exception
when others then
null;
end ;
執行存儲過程,插入數據到測試表中。
SQL> execute proc_insert(1,』dinya』);
PL/SQL procere successfully completed
SQL> select * from dinya_test;
ID NAME
1 dinya
在上例中,本地動態SQL執行DML語句時使用了using子句,按順序將輸入的值綁定到變數,如果需要輸出參數,可以在執行動態SQL的時候,使用RETURNING INTO 子句,如:
declare
p_id number:=1;
v_count number;
begin
v_string:=』select count(*) from table_name a where a.id=:id』;
execute immediate v_string into v_count using p_id;
end ;
更多的關於動態SQL中關於返回值及為輸出輸入綁定變數執行參數模式的問題,請讀者自行做測試。
二、使用DBMS_SQL包
使用DBMS_SQL包實現動態SQL的步驟如下:A、先將要執行的SQL語句或一個語句塊放到一個字元串變數中。B、使用DBMS_SQL包的parse過程來分析該字元串。C、使用DBMS_SQL包的bind_variable過程來綁定變數。D、使用DBMS_SQL包的execute函數來執行語句。
1、使用DBMS_SQL包執行DDL語句
需求:使用DBMS_SQL包根據用戶輸入的表名、欄位名及欄位類型建表。
create or replace procere proc_dbms_sql
(
table_name in varchar2, --表名
field_name1 in varchar2, --欄位名
datatype1 in varchar2, --欄位類型
field_name2 in varchar2, --欄位名
datatype2 in varchar2 --欄位類型
)as
v_cursor number; --定義游標
v_string varchar2(200); --定義字元串變數
v_row number; --行數
begin
v_cursor:=dbms_sql.open_cursor; --為處理打開游標
v_string:=』create table 』||table_name||』(』||field_name1||』 』||datatype1||』,』||field_name2||』 』||datatype2||』)』;
dbms_sql.parse(v_cursor,v_string,dbms_sql.native); --分析語句
v_row:=dbms_sql.execute(v_cursor); --執行語句
dbms_sql.close_cursor(v_cursor); --關閉游標
exception
when others then
dbms_sql.close_cursor(v_cursor); --關閉游標
raise;
end;
以上過程編譯通過後,執行過程創建表結構:
SQL> execute proc_dbms_sql(』dinya_test2』,』id』,』number(8) not null』,』name』,』varchar2(100)』);
PL/SQL procere successfully completed
SQL> desc dinya_test2;
Name Type Nullable Default Comments
---- ------------- -------- ------- --------
ID NUMBER(8)
NAME VARCHAR2(100) Y
SQL>
2、使用DBMS_SQL包執行DML語句
需求:使用DBMS_SQL包根據用戶輸入的值更新表中相對應的記錄。
查看錶中已有記錄:
SQL> select * from dinya_test2;
ID NAME
1 Oracle
2 CSDN
3 ERP
SQL>
建存儲過程,並編譯通過:
create or replace procere proc_dbms_sql_update
(
id number,
name varchar2
)as
v_cursor number; --定義游標
v_string varchar2(200); --字元串變數
v_row number; --行數
begin
v_cursor:=dbms_sql.open_cursor; --為處理打開游標
v_string:=』update dinya_test2 a set a.name=:p_name where a.id=:p_id』;
dbms_sql.parse(v_cursor,v_string,dbms_sql.native); --分析語句
dbms_sql.bind_variable(v_cursor,』:p_name』,name); --綁定變數
dbms_sql.bind_variable(v_cursor,』:p_id』,id); --綁定變數
v_row:=dbms_sql.execute(v_cursor); --執行動態SQL
dbms_sql.close_cursor(v_cursor); --關閉游標
exception
when others then
dbms_sql.close_cursor(v_cursor); --關閉游標
raise;
end;
執行過程,根據用戶輸入的參數更新表中的數據:
SQL> execute proc_dbms_sql_update(2,』csdn_dinya』);
PL/SQL procere successfully completed
SQL> select * from dinya_test2;
ID NAME
1 Oracle
2 csdn_dinya
3 ERP
SQL>
執行過程後將第二條的name欄位的數據更新為新值csdn_dinya。這樣就完成了使用dbms_sql包來執行DML語句的功能。
使用DBMS_SQL中,如果要執行的動態語句不是查詢語句,使用DBMS_SQL.Execute或DBMS_SQL.Variable_Value來執行,如果要執行動態語句是查詢語句,則要使用DBMS_SQL.define_column定義輸出變數,然後使用DBMS_SQL.Execute, DBMS_SQL.Fetch_Rows, DBMS_SQL.Column_Value及DBMS_SQL.Variable_Value來執行查詢並得到結果。
2. sql server 2008怎麼自動格式化sql語句
sql server 2008自動格式化sql語句的具體步驟如下:
1、依照如下步驟打開Sql查詢編輯器:開始 → Microsoft SQL Server 2012→ SQL Server Management Studio。
這樣就解決了「sql server 2008自動格式化sql語句」的問題。
3. sql在哪裡編輯代碼
2000用「查詢分析器」.進入查詢分析器:1、直接進入:開始-程序-ms sql server-查詢分析器
2、通過企業管理器進入:在企業管理器,點擊菜單「工具」-「SQL 查詢分析器」
2005和2008進入management studio ,連接伺服器後,點擊「新建查詢」就可以了
4. 怎麼在sql server中寫查詢語句
打開SQL Server Management Studio 界面。法1:單擊工具欄的「新建查詢」;方法2:或右擊資料庫名稱-》「新建查詢」;方法3:選中數據表-》編寫表腳本為-》SELECT到-》新查詢編輯器窗口。在資料庫對象下拉框中選擇「BooksDB」,在查詢編輯器輸入區中輸入Transact-SQL語句,然後點擊工具欄或「查詢」菜單中的「!執行」,執行輸入區的Transact-SQL語句
5. sql server2008查詢分析器在哪
工具/材料:Management Studio。
1、首先在桌面上,點擊「Management Studio」圖標。