debug時把sql語句復制出來,在資料庫鏈接工具中(如plsql,navicat等)執行一次,可能是你的value中設置了非空欄位,也有可能是你的資料庫策略不允許插入空.
B. 如何在游標for循環中使用動態SQL語句
給你舉個例子
利用游標循環更新、刪除MemberAccount表中的數據
1
2
3
4
5
6
7
8
9
10
11
12
13
DECLARE My_Cursor CURSOR --定義游標
FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游標中
OPEN My_Cursor; --打開游標
FETCH NEXT FROM My_Cursor ; --讀取第一行數據
WHILE @@FETCH_STATUS = 0
BEGIN
--UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
--DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --刪除
FETCH NEXT FROM My_Cursor; --讀取下一行數據
END
CLOSE My_Cursor; --關閉游標
DEALLOCATE My_Cursor; --釋放游標
GO
C. 我想用for循環一個sql語句並且限制循環數量怎麼實現,請高手幫忙
for($i=0;$i<10;$i++){
$row=mysql_query("select * from level1");
}
這樣就是循環10次了。如果要其他 數修改$i<多少就行了。不過不建議使用循環sql。效率不好。如果是正式網站,容易卡死
D. php如何避免在循環中使用sql語句
1、循環內拼接sql語句,循環外執行
例如:
//假設這里的$users是一個很大的數組,我們要循環取出其中的值foreach($users as $user){//這部分的sql是我從項目中隨便摘抄出來的。主要就是實現拼接sql語句$sql .= " ('{$order_sn}', '{$this->user_id}', '{$deliver_fee}', 0, "
. " '', '', '', "
. " '{$add_time}','{$order_status}', '{$order_amount}', '{$remark}', "
. " '{$pickup_code}', '{$self_pickup}', '{$collect_order_sn}', '{$key}', {$reservation_time}),";
}
//循環中拼接好sql之後,我們在循環外執行$sql = substr($sql, 0, -1);
DB::statement($sql);1234567891011
2、where條件換為where in()
比如我們的where()條件中要使用大規模的數組,那麼在語句應該是:
foreach($arr as $v){
DB::table('')->where('id',$v->id);
}123
此時我們可以轉變一下:
//先取出條件數組$arr,在直接執行whereIn即可DB::table('')->whereIn('id',$arr);12
注意:如果數據量很大,比如幾十萬條數據,那麼whereIn也會成為代碼的瓶頸,這個函數適用於數據量不是很大的情況。
E. for循環執行12次sql查詢 請問有什麼優化方法嗎
用存儲過程在資料庫中形成一個臨時表,然後讀出來,從現在的程序理念上來說,稍微復雜一點的邏輯就要寫存儲過程,不要總是用sql拼來拼去的,那樣成長不起來。
F. java連sql 插入用數據用for循環,求大神指導。
使用jdbc完成在java文件中添加數據到資料庫。步驟操作:
1建立Connection;
2在for循環下,編寫insert語句;
3建立preparedStatement;
4給sql賦參數值,並調用ps.execute()執行sql,並做異常處理;
5for循環結束,依次關閉ps,connection資源。
G. SQL存儲過程中怎麼寫循環
方法和詳細的操作步驟如下:
1、第一步,編寫存儲過程的整體結構,定義變數,見下圖,轉到下面的步驟。
H. 在sql server中循環語句 for要怎麼使用
sql server里有循環語句,在sqlserver 資料庫中,while循環語句是最常用的語句之一,for指定次數用的很少。比如:
SQL循環語句
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
while 條件
begin
執行操作
set @i=@i+1
end
WHILE
設置重復執行 SQL 語句或語句塊的條件,只要指定的條件為真,就重復執行語句,可以使用 BREAK 和 CONTINUE 關鍵字在循環內部控制 WHILE 循環中語句的執行。
語法
WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]
參數
Boolean_expression
返回 TRUE 或 FALSE 的表達式。如果布爾表達式中含有 SELECT 語句,必須用圓括弧將 SELECT 語句括起來。
{sql_statement | statement_block}
Transact-SQL 語句或用語句塊定義的語句分組,若要定義語句塊,請使用控制流關鍵字 BEGIN 和 END。
BREAK
I. 如何使用for循環更新sql 語句
CREAT PROCEDURE tester
AS
BEGIN
SET NOCOUNT ON;
DECLARE @userId varchar(50)
DECLARE @count int
SET @count = 0
SELECT @count = count(*) FROM UserService_User WHERE Account like '%111%'
WHILE @count > 0
BEGIN
SELECT @userId = Id FROM UserService_User WHERE Account like '%111%'
exec UserService_RemoveUserByUserId @userId
SET @count = @count -1
END
END
說明:
1、此存儲過程在SQL SERVER 2005上測試通過,值得注意的是,循環體中,語句是使用BEGIN……END包括的,而不是網路上常說的WHILE ……END WHILE結構,其他的循環語句,如LOOP ……UNTIL……END LOOP也不能通過編譯,也許是版本的問題,但在SQL SERVER2005中,循環體使用BEGIN……END就可以,而不能使用網路上常說的WHILE ……END WHILE結構。
2、循環體中 UserService_RemoveUserByUserId 是一個存儲過程的名稱,@userId為該存儲過程的參數,如果有多個參數,使用「,」分開就可以了,這也是存儲過程調用另一個存儲過程的一種方法。
J. python 執行sql語句,在for循環裡面 寫sql語句,出錯了
數據長不是py的數據長,是資料庫報錯,表的欄位超長了。