如何使用SQL Developer執行SQL語句
在執行一條SQL語句之后,你可能想要保存它。這樣你可以在以后打開并運行它或基于它來寫一條新的SQL語句。要保存一條SQL語句,你可以使用在$2-11中描述的標準窗口技術。
打開一個已保存的文件,你可以用Open命令。例如,在這一節中,文件打開對話框顯示了在第三章保存的SQL語句。它們被保存在目錄scriptsch03下,這個目錄在你下載并安裝本書的源碼時創建。本節中的截屏顯示了本章中打開的三個文件頁簽。注意這些文件的擴展名都是sql。
在你找開兩個或多個SQL工作表后,你可以通過點擊合適的選項卡來切換SQL語句。或者,你也可以從連接列表下邊的文件列表中選擇SQL語句。這樣,你可以從一個SQL語句向另一個SQL語句中進行代碼的剪切,復制,粘貼。當你打開一個SQL文件,SQL Developer不會為此文件中的SQL語句設置連接。結果是你必須通過連接列表為此文件中的SQL語句指定一個連接。如果你不那樣做的話,當你執行SQL語句時,SQL Developer將會提示你選擇一個連接。
要將一條新的SQL語句保存到文件,你可以使用Save命令。要保存一條修改過的SQL語句到它原來所在的文件,你也只需用Save命令。如果要將一條修改過的SQL語句到一個新的文件,你就需要用Save As命令。
要設置用來保存新的SQL語句的默認目錄,你可以按照本書所描述的那樣選擇Tools?Preferences命令。但是要注意,對于已經打開的文件是無法設置默認目錄的。
對于打開對話框和保存對話框,你可以通過點擊圖標來指定一個最近使用的目錄。例如在本節中,打開對話框顯示目錄ch02,ch03,db-setup都是最近使用過的。因此,你可以點擊其中的一個,輕而易舉地將其指定為最近使用的目錄。
轉載僅供參考,版權屬于原作者。祝你愉快,滿意請采納哦
如何獲得執行后的SQL語句
如果sql是在程序中直接寫的,那就簡單,全局變量就好
如果sql實在數據庫中的,那么可以考慮將sql存入表中,并存儲相應的需要的信息,生成一個類似的日志表,在程序中讀取就行,此方式在程序中也適用
如:
declare @sql varchar(2000) = 'select * from tb'
exec(@sql)
insert into [日志表](sql_text)
values(@sql)
基礎SQL剛在網上看了個SQL語句不到什么意思執行后知道結果不知
這個問題中的SQL語句,可能是SQL SERVER環境。
在這里,本人只是簡單說下各個SQL語句的大概意思,沒有這個環境,無法測試,僅供參考: 1、建立一個臨時表,表名#t。建表時,#號引導的表名就表示是臨時表。
#t表第1列是int類型的自動增長列,PRIMARY KEY表示是主鍵。 另一個字段是int型的nums。
2、使用select語句,將數據插入#t臨時表中。 NEWID()函數生成的是GUID(全球唯一標識符),再通過CHECKSUM將其轉化成數字,然后和數字100000進行求余運算,然后再通過absb函數得到絕對值。
(這句話LZ寫的好象有問題,#t表有2列,但select后面只有一列,盡管nums列可以為空,但是在INSERT INTO #t 后面應該根據后面select的列數,寫上表里允許插入的若干列名) 3、SELECT 查詢臨時表#t的數據。 4、DROP 刪除臨時表#t。
。
如何直接執行SQL語句
using (SqlConnection con = new SqlConnection(*tionStrings["default"].ConnectionString))
{ SqlCommand cmd = new SqlCommand();
*tion = con;
sqlStr = @"";
*dText = sqlStr ;
*dType = *;
gs = *eNonQuery(); }
這個就是直接執行sql語句的代碼!
怎樣自動執行一段SQL語句
Oracle下:
1.新增一個批處理文件:如*
2.新增一個SQL腳本文件:如*
*中輸入:sqlplus 用戶名/密碼 @C:\*(假設*在c:盤根目錄下)
4.然后運行這個批處理,就可以執行這個sql腳本了.
假如:*的內容為:exec autojob;select * from *;select * from *;
那么就能逐語句執行.
SQL Server下:
isql -U 用戶名 -P 密碼 -i c:\*
同樣在bat文件中,輸入上面一行,在*輸入腳本.
如:
use 數據庫名
go
select * from 表名
go
怎樣SQL存儲過程中執行動態SQL語句
MSSQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出接口,而EXEC沒有。
還有一個最大的好處就是利用sp_executesql,能夠重用執行計劃,這就大大提供了執行性能,還可以編寫更安全的代碼。EXEC在某些情況下會更靈活。
除非您有令人信服的理由使用EXEC,否側盡量使用sp_*的使用 EXEC命令有兩種用法,一種是執行一個存儲過程,另一種是執行一個動態的批處理。以下所講的都是第二種用法。
下面先使用EXEC演示一個例子,代碼1 代碼 DECLARE @TableName VARCHAR(50),@Sql NVARCHAR (MAX),@OrderID INT; SET @TableName = 'Orders'; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = '+ CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC' EXEC(@sql); 注:這里的EXEC括號中只允許包含一個字符串變量,但是可以串聯多個變量,如果我們這樣寫EXEC:EXEC('SELECT TOP('+ CAST(@TopCount AS VARCHAR(10)) +')* FROM '+ QUOTENAME(@TableName) +' ORDER BY ORDERID DESC'); SQL編譯器就會報錯,編譯不通過,而如果我們這樣:EXEC(@sql+@sql2+@sql3); 編譯器就會通過; 所以最佳的做法是把代碼構造到一個變量中,然后再把該變量作為EXEC命令的輸入參數,這樣就不會受限制了。 EXEC的缺點是不提供接口,這里的接口是指,它不能執行一個包含一個帶變量符的批處理,如下 代碼 DECLARE @TableName VARCHAR(50),@Sql NVARCHAR(MAX),@OrderID INT; SET @TableName = 'Orders'; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + 'WHERE OrderID = @OrderID ORDER BY ORDERID DESC' EXEC(@sql); 關鍵就在SET @sql這一句話中,如果我們運行這個批處理,編譯器就會產生一下錯誤 Msg 137, Level 15, State 2, Line 1 必須聲明標量變量 "@OrderID"。
使用EXEC時,如果您想訪問變量,必須把變量內容串聯到動態構建的代碼字符串中,如:SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + 'WHERE OrderID = '+CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC' 串聯變量的內容也存在性能方面的弊端。SQL Server為每一個的查詢字符串創建新的執行計劃,即使查詢模式相同也是這樣。
為演示這一點,先清空緩存中的執行計劃 DBCC FREEPROCCACHE (這個不是本文所涉及的內容,您可以查看MS的MSDN) 將代碼1運行3次,分別對@OrderID 賦予下面3個值,10251,10252,10253。然后使用下面的代碼查詢 SELECT cacheobjtype,objtype,usecounts,sql FROM *heobjects WHERE sql NOT LIKE '%cach%' AND sql NOT LIKE '%sys.%' 點擊F5運行,我們可以看到,每執行一次都要產生一次的編譯,執行計劃沒有得到充分重用。
EXEC除了不支持動態批處理中的輸入參數外,他也不支持輸出參數。默認情況下,EXEC把查詢的輸出返回給調用者。
例如下面代碼返回Orders表中所有的記錄數 DECLARE @sql NVARCHAR(MAX) SET @sql = 'SELECT COUNT(ORDERID) FROM Orders'; EXEC(@sql); 然而,如果你要把輸出返回給調用批處理中的變量,事情就沒有那么簡單了。為此,你必須使用INSERT EXEC語法把輸出插入到一個目標表中,然后從這表中獲取值后賦給該變量,就像這樣:代碼 DECLARE @sql NVARCHAR(MAX),@RecordCount INT SET @sql = 'SELECT COUNT(ORDERID) FROM Orders'; CREATE TABLE #T(TID INT); INSERT INTO #T EXEC(@sql); SET @RecordCount = (SELECT TID FROM #T) SELECT @RecordCount DROP TABLE #*_executesql的使用 sp_executesql命令在SQL Server中引入的比EXEC命令晚一些,它主要為重用執行計劃提供更好的支持。
為了和EXEC作一個鮮明的對比,我們看看如果用代碼1的代碼,把EXEC換成sp_executesql,看看是否得到我們所期望的結果 代碼 DECLARE @TableName VARCHAR(50),@sql NVARCHAR(MAX),@OrderID INT ,@sql2 NVARCHAR(MAX); SET @TableName = 'Orders '; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + ' WHERE OrderID = '+CAST(@OrderID AS VARCHAR(50)) + ' ORDER BY ORDERID DESC' EXEC sp_executesql @sql 注意最后一行;事實證明可以運行;sp_executesql提供接口 sp_executesql命令比EXEC命令更靈活,因為它提供一個接口,該接口及支持輸入參數也支持輸出參數。這功能使你可以創建帶參數的查詢字符串,這樣就可以比EXEC更好的重用執行計劃,sp_executesql的構成與存儲過程非常相似,不同之處在于你是動態構建代碼。
它的構成包括:代碼快,參數聲明部分,參數賦值部分。說了這么多,還是看看它的語法:EXEC sp_executesql @stmt=
定期執行SQL語句
1.無論你的SQL版本是什么,首先需要把SQL代理啟用!
2.你的SQL版本如果是2000,就點“工具”>;"新建作業"(工具就是最上面那一排,有新建,編輯,什么亂七八糟的,你選工具)
3.通過提示點下一步,把你寫的SQL語句加進去,記住他的語句最大長度是3200,超過這個長度就沒戲了(一般不會超過的)。
4.下一步到有個地方可以選“調度”,你點進去調度,里面有立即執行,每天一次,每周一次(還有什么我忘了,反正時間可以自己隨意定),下面有具體時間設定,你一看就會,設定好后,點“下一步”一直到最后一步,完成。
5。如果你的SQL版本是2005,就直接點代理,有個文件夾就叫“作業”,你右鍵這個文件夾,有個提示“新建作業”,點進去設置就好了,原理都是一樣的。就是比2000的界面漂亮點兒。
6.如果你用的SQL版本是2008,和2005差不多,我沒怎么太多用過,如法炮制吧,祝你好運!!
如何讓sql每天執行一下一個寫好的sql語句
可以設置定時任務,比較常用的是用sqlserver 代理新建作業。有時候數據庫自動備份也是用的這個。
還有一種比較復雜自己寫個程序,使用系統定時任務 定時執行。
創建sql server定時任務作業步驟如下:
1.要先安裝了sqlserver 代理服務
--2.鼠標右擊【SQL Server 代理】,選擇【啟動(S)】,如已啟動,可以省略此步驟;
--3.展開【SQL Server 代理】列表,右擊【作業】--【新建作業】;
--3.1 在【常規】選項卡中:
-- 輸入作業名稱,如My Job;
--3.2 在【步驟】選項卡中:
--3.2.1 點擊【新建】,輸入【步驟名稱】,如步驟1,類型默認T-SQL腳本,也可以選擇SSIS包等;
--3.2.2 在【數據庫】一欄選擇要作業處理的數據庫,在【命令】的右邊空白編輯欄輸入要執行的SQL代碼,
EXEC p_Name --如:執行一個P_Name的存儲過程
-- 也可以點擊命令下面的【打開】,打開.sql腳本;
--3.2.3 輸入運行腳本后,建議點擊【分析】,確保腳本語法正確,然后點擊下面的【確定】按鈕;
--3.3 在【計劃】選項卡中:
--3.3.1 點擊【新建】,輸入【計劃名稱】,如計劃1,計劃類型默認是重復執行,也可以選擇執行一次等;
--3.3.2 在【頻率】--【執行】處選擇每天、每周或每月,以每天為例,間隔時間輸入間隔幾天執行一次,
-- 下面還可以選擇每天一次性執行或間隔一定的時間重復執行
--3.3.3 在【持續時間】中選擇計劃開始執行的【起始日期】和【截止日期】,然后點擊【確定】按鈕;
--注意要將服務設置為自動啟動,否則在重啟服務器后作業就不運行了。
--啟動代理服務的方法:
--開始--運行--輸入*--找到【SQL Server 代理】的服務并雙擊--【啟動類型】選擇自動--【確定】
--至此,定時作業已創建完畢。
轉載請注明出處華閱文章網 » sql執行sql語句