Ⅰ 如何用数组向sql中输入数据
构造一个大的SQL语句呗,Insert into wer(A1,A2...A1000) Values(@a1,@a2,...@a1000)。里面有1000个参数,给参数数组循环赋值,然后执行就可以了。
这个字符串,你可以用循环来生成
string Sql,param;
Sql="";param="";
for(int i=1;i<=1000;i++)
{
Sql+="A"+i.ToString()+",";
param+="@a"+i.ToString()+",";
}
Sql="Insert into wer("+Sql.Substring(0,Sql.Length-1)+") Values ("+param.Substring(0,param.Length-1));
给这个Sql的参数数组赋值,然后执行这个SQL;
不过我记得2000下面,单个SQL命令最大长度为4K字节(记得不是太清楚了,你可以自己试试看),如果有1000个字段,光写字段名就超过4K字节了。
如果SQL语句太常,就需要拆分成两条,一条插入,并返回一个id,然后根据第二条update,或者你的参数中自己就带了一个id也可以。
Ⅱ sql存储过程处理数组参数
declare@strvarchar(500)
declare@insertvarchar(8000)
select@insert='insertintoyouTablevalues'
select@str='str1,1,1,1,1|str2,2,2,2,2|str3,3,3,3,5|str4,4,4,45,4'
select@str=@insert+'('''+@str+''')'
select@str=REPLACE(@str,',',''',''')
select@str=REPLACE(@str,'|',''')'+CHAR(13)+@insert+'(''')
print@str
--exec(@str)动态执行下生成的语句就好了
--print结果如下:
insertintoyouTablevalues('str1','1','1','1','1')
insertintoyouTablevalues('str2','2','2','2','2')
insertintoyouTablevalues('str3','3','3','3','5')
insertintoyouTablevalues('str4','4','4','45','4')
Ⅲ 如何给SQL SERVER存储过程传递数组参数
确切的说不行-SQL SERVER没有数组类型,ANSI SQL 92标准也不支持数组。但可用其它的方法来实现。
1. You could simulate an array by passing one or more varchar(255) fields with comma-separated values and then use a WHILE loop with PATINDEX and SUBSTR to extract the values.
1、你可以使用几个VARCHAR(255)字段来模拟数组,字段中用逗号分开各个数据,然后使用循环和PATINDEX和SUBSTR分开这些数据。
2. The more usual way to do this would be to populate a temporary table with the values you need and then use the contents of that table from within the stored-procere. Example of this below2、通常这种方法需要为这些数据创建一个临时表,然后在存储过程使用表中的内容。如下例create procere mytest @MyParmTempTable varchar(30)asbegin-- @MyParmTempTable contains my parameter list... 这个变量是包含参数的表名-- For simplicity use dynamic sql to into a normal temp table...
create table #MyInternalList (
list_item varchar( 2 ) not null)set nocount oninsert #MyInternalList
select *
from sysobjects
create table #MyList (
list_item varchar( 2 ) not null)insert #MyList values ( 'S' )
insert #MyList values ( 'U' )
insert #MyList values ( 'P' )exec mytest "#MyList"3. If all you wanted to do was use the array/list as input to an IN clause in a WHERE statement you could use :-3、如果你想在IN子句里使用输入的数组参数可以这样做:CREATE PROCEDURE sp_MyProcere (@MyCommaDelimitedString
Ⅳ php sql条件参数为数组
1、将二维数组转换为一维数组
$arr_2 (这是二维数组,就是你上边那个类型的,我这里就不贴了)
$arr_1 (这个保存转化后的一维数组)
下面是二维转化一维数组过程:
for($i=0;$i<count($arr_1);$i++){
$arr[] = $arr_2[$i]['cat_id'];
}
下面是循环输出一维数组:
foreach($arr_1 as $key=>$val){
echo $key . '<br>' .$val;
}
输出结果是所有的cat_id 键值。至于sql 中的循环,我想你看了这个以后应该会了。
原理就是将二维转换为一维数组,然后根据条件实现循环查询。这个转化的过程,你可以使用for循环,也可以使用php自带的合并数组函数,也可以使用高级点的spl高级数组合并。当然看你程序需要,如果是应用比较简单的,循环是最佳选择。
另外,邀请你加入我们php实验室,相互学习。在此,祝圣诞快乐。
Ⅳ c# sql 参数数组 执行
wer(A1,A2...A1000) Values(@a1,@a2,...@a1000)。里面有1000个参数,给参数数组循环赋值,然后执行就可以了。
这个字符串,你可以用循环来生成
string Sql,param;
Sql="";param="";
for(int i=1;i<=1000;i++)
{
Sql+="A"+i.ToString()+",";
param+="@a"+i.ToString()+",";
}
Sql="Insert into wer("+Sql.Substring(0,Sql.Length-1)+") Values ("+param.Substring(0,param.Length-1));
给这个Sql的参数数组赋值,然后执行这个SQL;
不过我记得2000下面,单个SQL命令最大长度为4K字节(记得不是太清楚了,你可以自己试试看),如果有1000个字段,光写字段名就超过4K字节了。
如果SQL语句太常,就需要拆分成两条,一条插入,并返回一个id,然后根据第二条update,或者你的参数中自己就带了一个id也可以。
另外,虚机团上产品团购,超级便宜
Ⅵ SQL语句可以声明使用数组么
SQL语句可以声明使用数组,声明方法为:
1、先定义一个数组,数组内容是一些数字,可以对应为数据表里的id列。
Ⅶ 关于BaseDao中如何获取sql参数数组
DECLARE @Test VARCHAR(50)
DECLARE @ArgsTable TABLE
(
Arg VARCHAR(50)
)
SET @Test = 'ASD,FGH,JKL,YUI'
DECLARE @TempIndex INT
WHILE @Test LIKE '%,%'
BEGIN
SET @TempIndex = CHARINDEX(',',@Test) --取出,位置
INSERT INTO @ArgsTable(Arg)
SELECT SUBSTRING(@Test,0,@TempIndex) --截取第一个参数
SET @Test = RIGHT(@Test,LEN(@Test) - @TempIndex) --使 @Test 取截后的字符串
IF @Test NOT LIKE '%,%' --如果是最后一个,加入列表并退出
BEGIN
INSERT INTO @ArgsTable(Arg)
SELECT @Test
BREAK;
END
END
SELECT * FROM @ArgsTable
Ⅷ 关于SqlParameter[] Params = new SqlParameter[1];请问在这声明一个Sql输入参数数组的作用的什么
ProcStr 貌似是你自己写的DataBase类的方法。
根据你的函数使用 我觉得这个函数的作用是返回满足条件的记录数。
int Count = -1; 是用来判断SQL语句是否执行成功
因为执行DELETE FROM Usersmr WHERE UserID = @UserID 这句SQL的时候
满足条件的记录数可能为0 可能大于0
所以如果Count<0 就表示执行失败。
具体函数的含义要具体看函数的源码了
Ⅸ sql 存储过程 传入两组数组参数
declare@nnvarchar(500)
declare@mnvarchar(500)
set@n='1,2,3,4,5'
set@m='a,b,c,d,e'
createtable#tb(nVARCHAR(500),mVARCHAR(500))
while(1=1)
begin
if(Charindex(',',@n)=0andCharindex(',',@m)=0)
begin
insertinto#tbvalues(@n,@m)
break
end
insertinto#tbvalues(Substring(@n,1,Charindex(',',@n)-1),Substring(@m,1,Charindex(',',@m)-1))
set@n=Right(@n,Len(@n)-Charindex(',',@n))
set@m=Right(@m,Len(@m)-Charindex(',',@m))
end
select*from#tb
droptable#tb
ps:要做好校验!
Ⅹ sql存储过程数组参数超难问题
--方法一,用字符串替换和拼接,构造成insert
into
表
select
的样子,然后执行
--方法二,用字符串拆分
declare
@a
varchar(800)='str1,0,0,0|str2,0,0,0|str3,0,0,0'
set
@a='insert
into
t
select
'''+@a
set
@a=replace(replace(@a,'|','''
union
all
select
'''),',',''',''')+''''
exec(@a)
/*
insert
into
t
select
'str1','0','0','0'
union
all
select
'str2','0','0','0'
union
all
select
'str3','0','0','0'
*/