存储过程错误 sql语句的写法?

alps1624 2009-01-02 07:00:35
CREATE proc query
@showCols varchar(500),
@showbiao varchar(500),
@totalQuery varchar(500)
as

declare @sql as varchar(500)
set @showCols = ' + showCols + '
set @showbiao = ' + showbiao + '
set @totalQuery = ' + totalQuery + '
set @sql ='select [ ' + @showCols + ' ] from [ ' + @showbiao + '] where '+ @totalQueryexec(@sql)
GO


cs

SqlConnection myconn = new SqlConnection("server=localhost;user id=sa;pwd=;DataBase=cbmsXP_db");
myconn.Open();
SqlCommand cmd = new SqlCommand("query", myconn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@showCols", SqlDbType.VarChar, 50);
cmd.Parameters.Add("@showbiao", SqlDbType.VarChar, 50);
cmd.Parameters.Add("@totalQuery", SqlDbType.VarChar, 50);

cmd.Parameters["@showCols"].Value = "' + showCols + '";
cmd.Parameters["@showbiao"].Value = "' + showbiao + '";
cmd.Parameters["@totalQuery"].Value = "' + totalQuery + '";

SqlDataAdapter adapt = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapt.Fill(ds);

GridView1.DataSource = ds;
GridView1.DataBind();
Label1.Text = "查询结果:(" + totalQuery + ")";
myconn.Close();


存储过程里老是提示错误,where ,'+' 附近有语法错误等,改了几处了还是不行,不知道应该怎么改,大家帮我看看 sql应该怎么写?
...全文
167 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
Robin 2009-01-03
  • 打赏
  • 举报
回复
使用这个 sp_executesql
zjp8023 2009-01-03
  • 打赏
  • 举报
回复
支持第7楼的方法.很有效的.
alps1624 2009-01-03
  • 打赏
  • 举报
回复
关键是7楼说的用事件探查器查看执行存储过程的SQL语句,我还不会用事件探查器,上网也没找到怎么查看存储过程啊,谁有这方面的资料啊?
wangying110166 2009-01-03
  • 打赏
  • 举报
回复
```
ASPNETDB 2009-01-03
  • 打赏
  • 举报
回复

set @sql ="select @showCols from @showbiao --where ?=@totalQuery"
exec(@sql)
GO
MAOGE1987 2009-01-03
  • 打赏
  • 举报
回复
7L的好方法
qiuqingpo 2009-01-03
  • 打赏
  • 举报
回复
set @showCols = 'showCols'
set @showbiao = 'showbiao'
set @totalQuery = 'totalQuery'
不要加引号换行了呀,直接写吧,这样也容易出错
hehaitaobest 2009-01-03
  • 打赏
  • 举报
回复
set @sql ='select [ ' + @showCols + ' ] from [ ' + @showbiao + '] where '+ @totalQuery
exec(@sql)
改为:
set @sql =(select @showCols from @showbiao where @totalQuery);
exec(@sql) ;
试试看~~~

hongqi162 2009-01-03
  • 打赏
  • 举报
回复
CREATE proc query
@showCols varchar(500),
@showbiao varchar(500),
@totalQuery varchar(500)
as

declare @sql as varchar(500)
set @showCols = 'showCols'
set @showbiao = 'showbiao'
set @totalQuery = 'totalQuery'
set @sql ='select [ ' + @showCols + ' ] from [ ' + @showbiao + '] where '+ @totalQuery
exec(@sql)
GO
walkghost 2009-01-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xuStanly 的回复:]
先用事件探查器看看执行存储过程的SQL语句是什么,
再调试存储过程,print @sql看看执行的语句哪错了。
[/Quote]
应该这样做。先看下你的sql都执行了哪些语句,是不是参数里面有‘’,如果有‘’,把它替换成‘’‘’。
如:

insert into sysloginfo
(UserName,memo,thisDateTime,sqlText)
values
('sixi','Query','20090103','select * from history where PlaceNo = ''100101010001''')
chenyu112 2009-01-03
  • 打赏
  • 举报
回复
输出SQL,看看它是否正确。
alps1624 2009-01-03
  • 打赏
  • 举报
回复
谢谢大家,问题解决了,呵呵```
zzxap 2009-01-03
  • 打赏
  • 举报
回复
+ ' ] 把这些东西去掉看看
zzxap 2009-01-03
  • 打赏
  • 举报
回复
不要用加号了
海倍娜楽 2009-01-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xuStanly 的回复:]
先用事件探查器看看执行存储过程的SQL语句是什么,
再调试存储过程,print @sql看看执行的语句哪错了。
[/Quote]


支持7楼,望楼主借鉴
Jack2013tong 2009-01-02
  • 打赏
  • 举报
回复
print @sql
运行一下,把输出的sql 在查询分析器里执行一下就知道问题在哪了
alps1624 2009-01-02
  • 打赏
  • 举报
回复
我在vs里调试,结果value为null,应该是传入的参数有什么问题么?
cmd.Parameters.Add("@showCols", SqlDbType.VarChar, 50);
cmd.Parameters.Add("@showbiao", SqlDbType.VarChar, 50);
cmd.Parameters.Add("@totalQuery", SqlDbType.VarChar, 50);

cmd.Parameters["@showCols"].Value = " showCols ";
cmd.Parameters["@showbiao"].Value = " showbiao ";
cmd.Parameters["@totalQuery"].Value = " totalQuery ";
alps1624 2009-01-02
  • 打赏
  • 举报
回复
print @sql在查询分析器里怎么看不出结果呢?

alter proc query
@showCols varchar(500),
@showbiao varchar(500),
@totalQuery varchar(500)
as
begin
declare @sql as varchar(500)
set @sql ='select [ ' + @showCols + ' ] from [ ' + @showbiao + '] where ' + @totalQuery
print @sql

GO
xuStanly 2009-01-02
  • 打赏
  • 举报
回复
先用事件探查器看看执行存储过程的SQL语句是什么,
再调试存储过程,print @sql看看执行的语句哪错了。
wuyq11 2009-01-02
  • 打赏
  • 举报
回复
set @sql ='select '+ @showCols +' from ' + @showbiao + '
where '+ @totalQuery+''
exec(@sql)
GO
先不执行,print @sql看看
加载更多回复(5)

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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