比如有一个SQLSELECT * FROM SELTEXT WHERE ID IN (1,2,3,4)我希望创建一个存储过程
比如:
CREATE PROCEDURE [INSelect]
@P_0 NVARCHAR(600)
AS
SELECT * FROM SELTEXT WHERE ID IN (@P_0)创建此存储过程没有问题,执行时总是有错误,
请教是什么问题,解决问题200分相送,另不打算使用临时表,有没有其他办法。
另:
SELECT * FROM SELTEXT WHERE ID IN (1,2,3,4) 中 1,2,3,4是变量,可以是任意值我把此贴设为200分只是想探讨一下学术上的事情,就是IN是否可以使用参数的问题,因为这个问题一直困扰我,并没有一个明确的答案,通过EXEC只是表面解决了问题,但是还是没有给我一个根本的概念,我并没有程序上无法解决的问题需要大家帮助,谢谢大家的帮助。
比如:
CREATE PROCEDURE [INSelect]
@P_0 NVARCHAR(600)
AS
SELECT * FROM SELTEXT WHERE ID IN (@P_0)创建此存储过程没有问题,执行时总是有错误,
请教是什么问题,解决问题200分相送,另不打算使用临时表,有没有其他办法。
另:
SELECT * FROM SELTEXT WHERE ID IN (1,2,3,4) 中 1,2,3,4是变量,可以是任意值我把此贴设为200分只是想探讨一下学术上的事情,就是IN是否可以使用参数的问题,因为这个问题一直困扰我,并没有一个明确的答案,通过EXEC只是表面解决了问题,但是还是没有给我一个根本的概念,我并没有程序上无法解决的问题需要大家帮助,谢谢大家的帮助。
解决方案 »
- ASP.NET中GridView的DataSource属性,是否可以通过这个属性获得数据源DataTable
- 百分数与小数的相互转化
- c# 正则查找
- 顶者有分,鼠标拖动的画图问题
- winform datagrid 怪问题
- String.GetHashCode 是怎样能够保证唯一的呢?
- Web应用程序中,如何实现动态加载DLL?
- C#中如何禁止系统的热键?
- 如何用程序控制鼠标,让鼠标自动移动?用什么API?如何用?最好有例子。谢谢!
- 高分求<<C# COM+编程指南>>!!!
- 我最近用C#在做一个多窗口的浏览器,但是不知道怎么实现添加到收藏夹这个功能
- 无法使用using Microsoft.Win32 ??
IN (1,2,3,4) 这里的1234分别表示4个不同的值
而@P_0 就算 set @P_0=1,2,3,4 IN (@p_0) @P_0 也只表示1个值. 其值是1,2,3,4 可以传入 1,2,3,4
按,进行分割
分别连接进 IN (@1,@2,@3,@4)
个数不确定 也只是个字符串处理问题个人意见欢迎拍砖
如用简单的办法建一个集合对象啊?
PROCEDURE [dbo].[INSelect]
@P_0 NVARCHAR(600)
AS
DECLARE @A VARCHAR(6000)
SET @A='SELECT * FROM testTb WHERE zip IN ('+@P_0+')'
然后用系统存储过程sp_executesql执行@A即可!
CREATE PROCEDURE dbo.Update_Data
@sqltxt varchar(4000) --//需要执行的更新sql语句
AS
declare @sql nvarchar(4000)
set @sql = @sqltxt
exec sp_ExecuteSql @sql --//其中sp_ExecuteSql 是系统自带的存储过程
要是知道确切的数量就好了比如建个OR
如where ID=@P_0 OR ID=@P_1 OR ID=@P_2 也成呵呵,问题是不知道确切的数量啊。。
不想用EXEC
1、直接组合 SQL 语句执行
CREATE PROCEDURE p_Test1
@TableName varchar(20)
AS
declare @SQLString nvarchar(200)
set @SQLString = N'select * from ' + @TableName
EXECUTE sp_executesql @SQLString
2、SQL 语句里包含嵌入参数
CREATE PROCEDURE p_Test2
@TableName varchar(20),
@UserID int,
@UserName varchar(50)
AS
declare @SQLString nvarchar(200)
set @SQLString = N'select * from ' +
@TableName +
N' where UserID=@UserID or UserName=@UserName'
EXECUTE sp_executesql @SQLString,
N'@UserID int, @UserName varchar(50)',
@UserID, @UserName
这也是 Microsoft SQL Server 的推荐做法。
二、使用EXECUTE语句执行字符串
CREATE PROCEDURE p_Test3
@TableName varchar(20)
AS
declare @SQLString nvarchar(200)
set @SQLString = N'select * from ' + @TableName
EXEC(@SQLString)
这个东西是个集合就可以了
EXEC 得会用它啊
@sql = 'SELECT * FROM SELTEXT WHERE ID IN ('+@P_0+')'
exec @sql
====
你若一定不想用exec sp_ExecuteSql的话可以将建一个表变量或临时表, IN字符串拆分后放进去
再SELECT * FROM SELTEXT WHERE ID IN (select id from @table)
不就行了
DROP PROCEDURE INSelect2GO
CREATE PROCEDURE [INSelect2]
@P_0 NVARCHAR(600)
AS
DECLARE @sql varchar(100)
set @sql = ','+@P_0+',' SELECT * FROM AAA WHERE charindex( ','+cast(SL as varchar)+',',@sql) > 0
EXECUTE INSELECT2 @P_0 = '60,10,20'