我创建了一个存储的proc,它创建了一个临时表,插入,选择,然后删除。在中执行存储的proc运行良好,并给出预期的结果。
CREATE PROCEDURE usp_TempTableTest
-- Add the parameters for the stored procedure here
@color VARCHAR(10)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOC
实际上,我是数据库的初学者。我编写了一个存储过程,在这个过程中,我希望在c# winform应用程序中使用if one从两个不同的表中获得结果,例如,我有两个表,其中一个列是'comp_number‘。现在,我已经编写了一个存储过程,它在单击事件按钮上执行。
ALTER procedure [dbo].[complainVehicle_sp]
as
DECLARE @compno int
if @compno is not null
begin
select compno,compdate,regno,engineno,mcode from dbo.complain
我试图在子查询(存储过程)中使用临时表,但是它返回空的结果集.
CREATE DEFINER=`root`@`localhost` PROCEDURE `get_profile_with_templates`(IN _username NVARCHAR(50), IN _template NVARCHAR(50))
BEGIN
SELECT id INTO @template FROM profile_template WHERE name=_template LIMIT 1;
SELECT * FROM profile WHERE username=_username AND
我正在处理一个函数,该函数需要调用一个存储过程,该存储过程返回N行,然后将结果作为处理的一部分插入到一个临时表中。
在存储过程上调用EXEC效果很好:
那么,为什么将执行结果插入到表变量中会抛出错误:
我得到的错误是:Invalid use of side-effecting or time-dependent operator in 'INSERT EXEC' within a function.
我知道这个错误通常是在试图操作不是函数本地的值时产生的,但是insert是在表变量上进行的,所以这应该不是问题。
今天,在SQL Server 2014中创建存储过程时,我注意到了一种奇怪的行为。下面是我的测试程序。请解释为什么Server不允许使用第一个SELECT进行编译,而允许使用第二个进行编译。
CREATE PROCEDURE [dbo].[test]
AS
BEGIN
SET NOCOUNT ON;
IF 1=0 -- this will never occur
BEGIN
select x from Table -- TABLE EXIST BUT COLUMN NOT - STORED PROCEDURE IS NOT CREATED
如何使用存储过程从实表插入临时表中的值?
当我在SQL Server中执行此代码时,它会显示正确的结果:
SELECT
Toy_Image, Toy_Name, Anime_Image, Anime_Name,
Toy_Distributor_Image, Toy_Distributor
INTO #Temp
FROM Toy
但是,当我尝试通过存储过程在SQL Server中执行此代码时,它没有给出任何结果,并且返回空值:
CREATE PROCEDURE AddToCart
AS
BEGIN
SELECT
Toy_Image, Toy_Name,
我有一个带有一些数据的表testing:
表:
select * from testing;
cola colb
---------
A B
C D
C X
S T
S Q
存储过程:
CREATE PROC spTesting
@TableName nvarchar(max)
AS
DECLARE @sql nvarchar(max)
SET @sql = 'SELECT * from '+ @TableName + ''
EXEC(@sql)
GO
执行存储过程:
execute spTe
我搞不懂为什么从实体框架api调用存储过程时会出现异常。错误状态为:
The data reader is incompatible with the specified [Model].[SP_Result_Type].
A member of the type, [typeName], does not have a corresponding column in the data reader with the same name.
所讨论的SP是一个SELECT命令,它从(3)不同的表中获取值,实体框架以ComplexObject类型返回值。通过“数据读取器”,我猜异常指的是
我使用的是SQL Server2005,我想知道如何从transact-sql中访问不同的结果集。下面的存储过程返回两个结果集,例如,我如何从另一个存储过程访问它们?
CREATE PROCEDURE getOrder (@orderId as numeric) AS
BEGIN
select order_address, order_number from order_table where order_id = @orderId
select item, number_of_items, cost from order_line where order_id = @o
我有一个存储过程(见下文),它将数据插入到物理表中,然后使用sys.databases连接信息。我在想,不使用物理表来插入数据会不会更好?将这些结果提取到此过程中的表变量中会更好吗?如果是这样,如何做到这一点?
CREATE PROCEDURE dbo.PROC_getDbInfo
AS
SET NOCOUNT ON
GO
TRUNCATE TABLE dbo.dbinfo
GO
EXECUTE sp_msforeachdb 'insert into dbo.dbinfo
select ''?'
我使用存储过程已经超过1.5年了。但我从未考虑过如何从UI或其他存储过程中检索数据。
当我编写一个简单的存储过程时。例如:
CREATE PROCEDURE sp_test
AS
BEGIN
SELECT * FROM tblTest --Considering table has 3 columns.
END
C#是如何将这个结果输入DataTable的。
每当我必须在另一个过程中使用这个过程的结果时,我认为我们必须使用表数据类型创建一个表值参数,并将其结果赋值给一个表变量。我从来没试过。
CREATE PROCEDURE sp_testcall
AS
BEGIN
@temp = exe
让我解释一下这个问题。
我有两个表,其中有3列具有相同的数据tpyes。如果您愿意,这3列将创建一个键/ID,但是表中的列的名称不同。现在,我正在为这两个表创建这3列的查询。我已经独立获得了这些结果
例如:
SELECT ID, FirstColumn, sum(SecondColumn)
FROM (SELECT ABC||DEF||GHI AS ID, FirstTable.*
FROM FirstTable
WHERE ThirdColumn = *1st condition*)
GROUP BY ID, FirstColumn
我使用postgres 13并使用use_remote_estimate: on和fetch_size: 10000创建了一个外部服务器。tableA这里是created_date的一个分区表。如果记录数在3M左右,但对超过3M的记录抛出错误,则查询运行良好。
select
date_trunc('month', created_date)::date as month,
count(distinct category_id) as categorys,
count(distinct user_id) as workers
from
我正在创建一些触发器,以便在产品表中存储给定产品的平均评级。我还被要求存储产品的评论总数。因此-我需要在触发器中检索2个值,然后适当地更新目标表。
应该使用单独的select语句吗?
SET my_a = SELECT a FROM foo;
SET my_b = SELECT b FROM foo;
作为变量检索结果集的单个语句(这可能吗?):
SET var = SELECT (a,b) FROM foo;
UPDATE bar SET c=var.a,d=var.b;
或者甚至可能将结果集存储在触发器内的临时表中(这可能吗?)
在用于数据子集交互分析的脚本中,将查询结果存储到临时表中进行进一步分析通常是有用的。
我的许多分析脚本都包含这种结构:
CREATE TABLE #Results (
a INT NOT NULL,
b INT NOT NULL,
c INT NOT NULL
);
INSERT INTO #Results (a, b, c)
SELECT a, b, c
FROM ...
SELECT *
FROM #Results;
在Server中,临时表是连接范围的,因此查询结果在初始查询执行后仍然存在。当我想要分析的数据子集计算成本很高时,我使用此方法而不是使用表变量,因为子集在不同
我试图运行一个执行过程,它会将数据插入到“表A”中。对于一个特定的参数,我已经将参数类型设置为"Date“,以匹配”表A“中"DateExample”列的数据类型。由于某些原因,系统正在将视图数据源"ViewExample“中的字段数据类型识别为nvarchar,尽管数据类型是date。
我尝试将参数设置为nvarchar,但收到以下错误:
Msg 241, Level 16, State 1, Procedure p_example, Line 34 [Batch Start Line 0]
Conversion failed when converting date
我已经找到了数百篇关于如何将存储过程的输出插入到表中的文章,但没有人进一步解释如何将其他数据作为列插入。
我正在循环遍历一个表并执行存储过程,然后将其插入到tempTable中,但是我需要从第二个表中添加一个ID的额外列。我可以更改存储过程以返回该附加ID,但是我需要在不同服务器上的20+数据库上运行它,这将耗费时间。
DECLARE @c_id_view varchar(255)
DECLARE @c_id int
DECLARE cur CURSOR FOR SELECT c_id FROM #temp where ins != 'Health'
OPEN cur
FE
我有一个触发器,它通过id连接表中的一列,并将其插入到一个新表中。当update、insert、delete在表A上触发时,它将按id分组并连接column1并将其插入到表B中。
问题是,当触发器触发时,Oracle抛出异常变异表。这是因为触发器运行查询:
delete from tableb where id = :id;
insert into tablea (id, col1)
select id, wm_concat(col1) from tablea group by id
如何使用触发器修复此问题?(不能使用存储过程,希望避免使用计划任务)。