線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2747
推到 Plurk!
推到 Facebook!

Store Procedure問題?

答題得分者是:st33chen
lasterliu
一般會員


發表:38
回覆:57
積分:19
註冊:2007-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-26 22:24:11 IP:123.192.xxx.xxx 訂閱
請教各位大大:
小弟想詢問各位大大一個問題,就是有辦法擷取SP中程式碼的內容嗎?

如:
[code delphi]
ADOQuery1.SQL.Add('TEST.dbo.sp_A');
ADOQuery1.ExecSQL;
ADOQuery1.Open;

[/code]

想請問若執行這某個SP後,我有辦法取得SP中程式碼的內容嗎?

如問題有描述不周的地方,煩請告知小弟,謝謝~~
只差一步
一般會員


發表:3
回覆:8
積分:7
註冊:2006-12-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-27 16:16:39 IP:220.196.xxx.xxx 訂閱
who can guess the content of 'TEST.dbo.sp_A' ?
===================引 用 lasterliu 文 章===================
請教各位大大:
小弟想詢問各位大大一個問題,就是有辦法擷取SP中程式碼的內容嗎?

如:
[code delphi]
ADOQuery1.SQL.Add('TEST.dbo.sp_A');
ADOQuery1.ExecSQL;
ADOQuery1.Open;

[/code]

想請問若執行這某個SP後,我有辦法取得SP中程式碼的內容嗎?

如問題有描述不周的地方,煩請告知小弟,謝謝~~
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-27 16:52:58 IP:122.116.xxx.xxx 未訂閱
您好,

您這一題和用何種 db 是有很大關係的,
請先提示您是用何種 db engine.

------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
lasterliu
一般會員


發表:38
回覆:57
積分:19
註冊:2007-11-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-27 20:15:26 IP:123.192.xxx.xxx 訂閱
謝謝兩位大大的回答:

只差一步大大,小弟不懂您的意思,小弟是想詢問是否有方法可以取得SP中的內容,不是說要取得TEST.dbo.sp_A此SP的內容,小弟描述不好的地方,敬請見諒。

st33chen大大,小弟使用的是MS SQL2005,照大大的回答,是不是有些DB engine可以做到此功能阿@@。

若各位大大有其他指教,歡迎提出,謝謝。

st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-27 20:47:53 IP:122.116.xxx.xxx 未訂閱
您好,
我常用 oracle, mysql
oracle 有一個 table 存每個 stored procedure 及 stored function 的
每一列 (create procedure 或 create function 時的) 原始碼
我曾寫過 給 procedure 或 function 名取其原始碼的 delphi 程式,
(但要找一下, 忘了放哪裡)
mysql 部份則沒研究過這個問題.
mssql 更是莫宰羊.
==================================================
修改1 :
mysql 5.1.3 後有一個 SHOW PROCEDURE CODE 可用
5.1.21 後有一個 SHOW CREATE PROCEDURE 可用
還沒試過可否在程式中用
==================================================
修改2 :
經實測,
SHOW PROCEDURE CODE 不可以用;
SHOW CREATE PROCEDURE 可以用, 結果中的 create function 欄位為一字串,
內容不只是 procedure 的原始碼而已, 需要自行解析該字串;
==================================================
修改3:
mssql 的話, 我找到一篇, 沒仔細研究, 只 glance 了一下, 應該有您要的答案,
http://www.motobit.com/tips/detpg_sql-find-text-stored-procedure/
===================================================
修改4:
ms sql 另一篇
http://bytes.com/groups/ms-sql/144293-getting-stored-procedures-code
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-12-28 08:33:47, 註解 無‧
st33chen 重新編輯於 2008-12-28 08:42:53, 註解 無‧
st33chen 重新編輯於 2008-12-28 11:27:33, 註解 無‧
st33chen 重新編輯於 2008-12-28 11:37:19, 註解 無‧
st33chen 重新編輯於 2008-12-28 11:44:31, 註解 無‧
lasterliu
一般會員


發表:38
回覆:57
積分:19
註冊:2007-11-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-12-30 08:27:31 IP:60.251.xxx.xxx 訂閱
謝謝 st33chen 大大的資料,小弟看完後是使用 sp_helptext 預存程序,但是在SQL中使用是OK的,
但是在DELPHI中就會有錯誤,可以煩請大大指導一下嘛?
[code delphi]
ADOQuery1.Close;
ADOQuery1.SQL.Text:='sp_helptext :P1';
ADOQuery1.Parameters.ParamValues['P1']:='DB.dbo.sp_A';
ADOQuery1.ExecSQL;
[/code]
錯誤訊息為:物件限定詞的資料庫名稱元件必須是目前資料庫的名稱

=====================================================================================
st33chen大大,後來小弟改用另一篇文章中的方法,可以解決我的問題了。

使用 find_text_in_sp 此SP,傳欲查詢的字串與DBNAME即可以找出SP中的內容(文章中有範例喔!!)。
find_text_in_sp 此為自己造的程序,程式碼在大大中的文章有PO。
st33chen大大謝謝您的解答。

至於上面的問題(錯誤訊息為:物件限定詞的資料庫名稱元件必須是目前資料庫的名稱),
若有大大知道,可以跟小弟指點迷津一下嗎?謝謝~~
編輯記錄
lasterliu 重新編輯於 2008-12-30 08:28:15, 註解 無‧
lasterliu 重新編輯於 2008-12-30 09:09:35, 註解 無‧
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-12-30 09:43:55 IP:118.168.xxx.xxx 未訂閱
mssql 的話我比您還菜. (因為不喜歡m$)
可能要勞駕 careychen 大大或其他高手了.
不過, 在此之前您可以試一下 adocommand 看看
因為我沒 mssql 環境, 無法試. pai-sei la.

=========================================
(唉. 為了生存, 打算安裝 vs2008 express 玩看看)
=========================================
等一下,
假如是
訊息為:物件限定詞的資料庫名稱元件必須是目前資料庫的名稱
可否用一個 adoconnection 指定 mssql 中的 database name
而 adoquery 的參數只傳入 sp 名
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-12-30 09:47:53, 註解 無‧
st33chen 重新編輯於 2008-12-30 09:52:59, 註解 無‧
st33chen 重新編輯於 2008-12-30 09:54:02, 註解 無‧
系統時間:2024-05-06 20:13:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!