CREATE proc query
@showCols varchar(500),
@showbiao varchar(500),
@totalQuery varchar(500)
asdeclare @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应该怎么写?
@showCols varchar(500),
@showbiao varchar(500),
@totalQuery varchar(500)
asdeclare @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应该怎么写?
1 :普通SQL语句可以用Exec执行 eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名 declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确 3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中? declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
CREATE proc query
@showCols varchar(500),
@showbiao varchar(500),
@totalQuery varchar(500)
as
declare @sql as varchar(500)
set @sql ='select [ ' + @showCols + ' ] from [ ' + @showbiao + '] where ' + @totalQuery
exec(@sql)
GO
exec 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
exec(@sql)
end
GO
exec 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
exec(@sql)
end
GO
exec query 'showCols' , 'showbiao' , 'totalQuery' 老是提示 第 1 行: 'totalQuery' 附近有语法错误。这语法错误到底是什么意思啊
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 ";
CREATE proc query
@showCols varchar(500),
@showbiao varchar(500),
@totalQuery varchar(500)
as declare @sql as varchar(500)
set @sql ='select ' + @showCols + ' from ' + @showbiao + ' where '+ @totalQuery
exec(@sql)
GO
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();