用脚本直接获取"修改存储过程的脚本",既点击存储过程,右键--修改,打开新页面的脚本

icbc_ljt 2011-10-23 11:32:13
怎么写命令直接获取"修改存储过程的脚本",既点击存储过程,右键--修改,打开新页面的脚本一样的脚本

用exec sp_helptext '存储过程名称'获取到的要把create 改成alter

能不能写脚本直接获取"修改存储过程的脚本"
...全文
88 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
风骑士之怒 2011-10-24
  • 打赏
  • 举报
回复
用C#写个窗体程序好了,用sp_helptext获取存储过程,然后将第一行的create关键字改为alter,将文本放在textbox里面

类似:

form1放一个textbox(多行模式)、两个button

代码:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
StringBuilder str = new StringBuilder();
int i = 0;
using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=QQ7391420QQ;database=test"))
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
cmd.CommandText = "sp_helptext";
cmd.Parameters.Add(new SqlParameter("@objname", "p_select"));

SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (i < 1)
{
str.Append(dr[0].ToString().Replace("create", "alter"));
}
else
{
str.Append(dr[0].ToString());
}
i++;
}
dr.Close();
}
textBox1.Text = str.ToString();
}

private void button2_Click(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=QQ7391420QQ;database=test"))
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.CommandText = textBox1.Text;
cmd.ExecuteNonQuery();
}
}
}


textbox1里面的存储过程可以添加一些检查机制,如存储过程结构检查等,
完善一下这个小实例,你就可以自己做个图形界面管理SQL信息了
jshi123 2011-10-24
  • 打赏
  • 举报
回复
先drop再create
declare @sp table(text nvarchar(255))
insert @sp select 'drop procedure xxxx' -- replace xxxx with your stored procedure name
insert @sp exec sp_helptext 'xxxx'
select text from @sp
ZhangNan20100811 2011-10-24
  • 打赏
  • 举报
回复
mark,学习了..
山东蓝鸟贵薪 2011-10-24
  • 打赏
  • 举报
回复
学习一下,
谢谢分离
icbc_ljt 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wknight_it 的回复:]
用C#写个窗体程序好了,用sp_helptext获取存储过程,然后将第一行的create关键字改为alter,将文本放在textbox里面

类似:

form1放一个textbox(多行模式)、两个button

代码:

C# code

public partial class Form1 : Form
{
public Form1()
……
[/Quote]

如果你这样子会反存储过程里面的创建临时表的create也替换掉,我是想不用替换,有没有直接给我们调用的存储过程,如sp_helptext这样子的
icbc_ljt 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jshi123 的回复:]
declare @sp table(text nvarchar(255))
insert @sp exec sp_helptext 'xxxx' -- replace xxxx with your stored procedure name
select replace(text, 'create', 'alter') from @sp
[/Quote]

如果你这样子会反存储过程里面的创建临时表的create也替换掉,我是想不用替换,有没有直接给我们调用的存储过程,如sp_helptext这样子的
宝_爸 2011-10-24
  • 打赏
  • 举报
回复
还有sp_helptext这样的系统sp,学习了。
jshi123 2011-10-24
  • 打赏
  • 举报
回复
declare @sp table(text nvarchar(255))
insert @sp exec sp_helptext 'xxxx' -- replace xxxx with your stored procedure name
select replace(text, 'create', 'alter') from @sp
黄亮 2011-10-23
  • 打赏
  • 举报
回复
先判断是否存在,如果有就删除。
然后再create
黄亮 2011-10-23
  • 打赏
  • 举报
回复

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Sp_Test]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[Sp_Test]
GO

USE [Test]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[Sp_Test]
AS
BEGIN
select 1
END

GO

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧