主页
Top.Mail.Ru Yandeks.Metrika
论坛:“基地”;
当前存档:2002.07.25;
下载:[xml.tar.bz2];

向下

MS SQL中的文本存储过程 找到类似的分支


ED_IV   (2002-07-04 08:53) [0]

大家好!

我试图使用以下查询读取存储过程文本。
SELECT syscomments.text SPText FROM sysobjects INNER JOIN syscomments ON
sysobjects.id = syscomments.id WHERE sysobjects.name =:SPName AND
sysobjects.xtype =“P”AND sysobjects.name NOT LIKE“dt%”

我打开查询 - 一切都好! 和EOF“不!但是当我试着看看里面的田野时
TQuery(必须有一个SPText字段) - 有一个空列表...... :(并且在标准中
melkosoftov的ISQL显示了一切诚实 - 有一个SPText字段。

谁遇到过这样的问题? 还有其他方法吗?
阅读惠普的文字?

埃德。



MishGan   (2002-07-04 09:29) [1]

尝试稍微更改一下查询:

SELECT cast(syscomments.text as varchar(8000))SPText .....

稍后告诉我它是否有帮助。



Nikita   (2002-07-04 10:22) [2]

试试这个:
SELECT转换(varchar(255),SC.text)作为SPText FROM sysobjects SO INNER JOIN syscomments SC ON
SO.id = SC.id WHERE SO.name =:SPName AND
SO.xtype =“P”和SO.name不喜欢“dt%”




AlexSV   (2002-07-04 10:54) [3]

完全相同可以获得如下:sp_helptext:SPName
结果是类似的。
简单地说,如果过程的文本超过255个字符,那么它将分布在多行上。
可能,家中的MS首先从这些作品中收集,然后显示。 这是解决方案,恕我直言。



Севостьянов Игорь   (2002-07-04 13:01) [4]

我没有在Delphi上做过(我应该在VB上做过),但我认为原理相同
我在这里得到了所有文本 - 如果我需要翻译Delphi,请写入soap ...(我在VB上做了一种SQLNavigtor - 有点像企业管理器)。 它甚至适用于MSSQL 6.0

这是一段提取SP正文的代码:

Private Sub LoadScript() On Error GoTo ShowError Dim strSQL As String Dim ObjID As Variant Dim NL As Variant NL = NodeLevel(tvObjects.SelectedItem) 如果(NL = 4)或(NL = 6)那么 ObjID = -1 StatusMessage“正在加载对象吱吱声...” ObjID = ObjectId(tvObjects.SelectedItem) 如果ObjID> -1那么 strSQL =“” strSQL =“SELECT text FROM” strSQL = strSQL&NodeMultipleLevel(tvObjects.SelectedItem,NodeLevel(tvObjects.SelectedItem))&“.. syscomments WHERE id =” strSQL = strSQL&ObjectId(tvObjects.SelectedItem) 随着rs .CursorLocation = adUseClient 。打开strSQL,Conn,adOpenDynamic,adLockOptimistic,adCmdText txtScript.Text =“” 虽然不是.EOF txtScript.Text = txtScript.Text&Replace(.Fields(0).OriginalValue,vbLf,vbNewLine) .MoveNext 蜿蜒 .Close txtScript.Visible = True StatusMessage“” 结束 结束如果 结束如果 ShowError:ShowErrors“LoadScript”,错误 结束子 Function ObjectId(nodeX As node)As String On Error GoTo ShowError Dim strSQL As String strSQL =“” strSQL = strSQL&“SELECT id FROM” strSQL = strSQL&NodeMultipleLevel(nodeX,NodeLevel(nodeX))&“.. ..sysobjects WHERE name =”“&nodeX&”“” 随着rs 如果.State = adStateOpen然后.Close .CursorLocation = adUseClient 。打开strSQL,Conn,adOpenDynamic,adLockOptimistic,adCmdText 如果.RecordCount> 0那么 ObjectId = .Fields(0).OriginalValue 结束如果 .Close 结束 ShowError:ShowErrors“ObjectId”,Err 结束功能
好吧,一般来说,SQL就是这样

SELECT text FROM master..syscomments WHERE id = (SELECT id FROM master..sysobjects WHERE name =“sp_who2”)

是,然后 - 直到结束(EOF),例如,在备忘录中
并且不要忘记行末的#13(Enter)#10(Tab)等字符(行 - ND中的记录)





TSV   (2002-07-04 14:53) [5]

> AlexSV(04.07.02 10:54)

在您撰写帖子之前,您处于表格的结构中 syscomments中 看着??? 有一个领域 [text] nvarchar(4000) 。 得出结论......
关于255字符 - 所以这个BDE不再错过Native Links。



SergSuper   (2002-07-04 15:49) [6]

或者也许不重新发明轮子并使用标准程序?
sp_helptext的
经验法则,或未加密的存储过程,用户定义的函数,触发器或视图。




MishGan   (2002-07-04 16:17) [7]

2 SergSuper。 我认为使用sp_helptext不会解决这个问题,因为 它还返回一个nvarchar列。 并且一路上因为他所有的问题。



Balu   (2002-07-04 21:20) [8]

我是这样做的:
使用ComObj; .............. VAR srvs,base,Proc:Variant; 我:整数; S:WideString; ......................... srvs:= CreateOleObject(“SQLDMO.SQLServer”); srvs.Connect(“服务器名称”,“sa”,“密码”); base:= srvs.Databases。Item(“Base Name”); Proc:= base.StoredProcedures.Item(“存储过程的名称”); S:= Proc.Text; Memo1.Lines.Clear; Memo1.Lines.Add(S); .........................



SergSuper   (2002-07-05 10:05) [9]

> MishGan

那么好吧

create table #t(txt varchar(255))
insert #t exec sp_helptext“some_proc”
从#t中选择*



AlexSV   (2002-07-05 10:55) [10]

> TSV

而你实际上是关于什么是MS SQL?

由于未指定版本,因此我在线提供了所述的结构

列数据类型说明
...
文本 varchar(255) SQL定义语句的实际文本。

我在6.5上工作。 结构看起来一样。

这就是我用版本获取整个存储过程的方法:

过程TForm1.Button1Click(Sender:TObject);
VAR
SPText:TStrings;
开始
使用Query1开始
打开;
SPText:= TStringList.Create;
尝试
而不是eof开始
SPText.Add(FieldValues [“text”]);
下一步;
结束;
最后
Memo1.Lines.AddStrings(SPText);
SPText.Free;
首先;
结束;
结束;
结束;

同时,Query1.SQL正在运行 sp_helptext <Stored_Procedure Name>



TSV   (2002-07-05 12:03) [11]

我在谈论7和2000的版本...... ;-)



Страницы: 1 整个分支

论坛:“基地”;
当前存档:2002.07.25;
下载:[xml.tar.bz2];

楼上









内存:0.6 MB
时间:0.023 c
1-81261
博镇
2002-07-15 01:23
2002.07.25
告诉我有关线程的信息....


1-81246
尤里佐托夫
2002-07-14 18:10
2002.07.25
人! 帮助人类!


14-81421
阿米特
2002-06-16 22:02
2002.07.25
人们祝贺我......


1-81339
White_DeviL
2002-07-12 23:42
2002.07.25
将数据发送到HTML并将数据传输到POST motodot


14-81445
SVET
2002-06-27 15:19
2002.07.25
图标





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский